[C]预处理指令

扫码查看

一、预处理指令在编译阶段就处理了,所以编译成才后运行的这个阶段已经是预处理后的结果,例如指令

#define BUFFSIZE 4096

      的预处理方式是把代码出现有BUFFSIZE的地方都替换为4096;

      下面的例子,test会正确打印BUFFSIZE,跟作用域无关:

#include <stdio.h>

void test(void);

int main(void)
{
    test();
    #define BUFFSIZE 4096
}

void test(void){
    printf("%d\n", BUFFSIZE);//输出4096
}

反而跟编译顺序有关,把BUFFSIZE定义放在定义test的行数之下,编译器就会报错:

#include <stdio.h>

void test(void);
void test(void){
    printf("%d\n", BUFFSIZE);
}

int main(void)
{
    test();
    #define BUFFSIZE 4096
}

报错:

c72.c: In function ¡®test¡¯:
c72.c:7:17: error: ¡®BUFFSIZE¡¯ undeclared (first use in this function)
  printf("%d\n", BUFFSIZE);
                 ^
c72.c:7:17: note: each undeclared identifier is reported only once for each function it appears in
01-15 04:13
查看更多