A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1213842165 中级黑马   /  2015-11-13 22:40  /  1260 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*宏定义的用法*/
#include <stdio.h>
#define kLength 5
//宏定义函数
#define kAdd(a,b) ((a)*(b))
int add(int a,int b);

int main(){
   
    int arr1[kLength];
    int arr2[kLength];
    int arr3[kLength];

    printf("%d\n",kLength);
    printf("%d\n",kLength+10);
   
//#undef kLength
   // #undef kAdd(a,b)
   
  //  int kLength=10;//int 5=10;
    printf("%d\n",kLength+10);
   
   
    //被双引号的引起来的不会被替换

   // printf("kLength\n");
    int b=add(2,3);
    int c=kAdd(2,3);//int c=2+3;
   
//宏定义只会做代码替换,不会关注任何逻辑,容易出现优先级错误(加括号解决).

    int d=kAdd(2,3)/kAdd(4,5);
   // int d=(2+3)/(4+5);
    int f=kAdd(2+3,3+4);
    //int f=(2+3)*(3+4);
    printf("%d,c=%d,d=%d,f=%d\n",b,c,d,f);
   
   
   // 替换可以设置作用域.如果不设置,作用域则是这行代码出现到代码的最后一行
    #undef kLength
   
    return 0;
   
}

int add(int a,int b){
    return a+b;
}

2 个回复

倒序浏览
为你先赞一个,顶!今天考试得了多少啊?
回复 使用道具 举报
xiaolang110 发表于 2015-11-13 23:23
为你先赞一个,顶!今天考试得了多少啊?

顶的好{:2_32:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马