黑马程序员——预处理指令(宏定义)

来源:互联网 发布:流体热力学软件 编辑:程序博客网 时间:2024/04/30 14:14

---------------------- iOS开发、iOS培训、期待与您交流! ----------------------

宏定义

1、带参数的宏定义

#include <stdio.h>

#define COUNT 4  // 从这一行开始,到代码块结束,COUNT都有效,要是把#define COUNT4 写在代码中间,则从那一行开始有效

int main()

{

char *name ="COUNT";

printf("%s",name);// 打印结果是:COUNT, 因为宏定义不管 " "

int ages[COUNT] = {1,2,2,3,4};

for(int i =0;i<5;i++)

{

printf("%d\n" ages[i]);

}

// 如果在这里添加 #undef COUNT ,COUNT从这里就开始失效

return 0;

}

 

注意点:1. 所有预处理指令都是以#开头

2.预处理指令分为3种:宏定义、条件编译、文件包含

3.预处理指令在代码翻译成01之前执行

4.预处理的位置是随便写的

5.预处理指令的作用域:从编写指令的那一行到文件结束或到#undef

 

2、带参数的宏定义

#include <stdio.h>

#define pingfang(a)  ((a)*(a)) 

/*

 ((a)*(a))  这种写法最严谨编译器会读成 ((5+5)*(5+5))==100

 如果写成 (a*a)则编译器会读成(5+5*5+5)==35

*/

int main()

{

int c = pingfang(5+5);

printf("%d\n",c);

return 0;

}

预处理指令在程序把代码翻译成01之前就已经运行了

即 : #define COUNT 4  先执行

      int a= 10; 后执行

  int b=12;  后执行

  #define COUNT1 =8 先执行


0 0