在C中,如果使用未定义的东西定义变量会发生什么?

时间:2012-04-26 18:20:05

标签: c gcc macros c-preprocessor

我有一个像这样的示例代码:

int var;
var = MACRO_A;

我希望MACRO_A的定义如下:

#define MACRO_A    1234

但是,我可以找到源代码中任何位置定义的MACRO_A,但我可以成功构建代码,那么var的值是多少?结束?

编译器是gcc。

2 个答案:

答案 0 :(得分:2)

  

但是,我找不到源中任何地方定义的MACRO_A   代码,但我可以成功构建代码,所以它的价值是什么   最后的var

它存在于某处或无法编译。也许它是直接在命令行上定义的? (-DMACRO_A

答案 1 :(得分:1)

在使用-D选项进行编译时,可能已经传递了该宏。

#include <stdio.h>

int main()
{
    int i = MACRO_A;
    printf("MACRO_A : %d \n", i);
    return 0;
}

输出:

$ gcc macro.c -D MACRO_A=10
$ ./a.out 
MACRO_A : 10 
$