预处理器c,[常量或变量]

时间:2014-04-17 10:20:40

标签: c c-preprocessor

我有3个文件:

在file1.h我声明:

#ifdef SYMBOLE
extern int const my_var;
#else
extern int my_var;
#endif
文件file2.c中的

我定义了:

int my_var;

并在file3.c中我初始化了my_var:

my_var = 4;

我的问题是,如果我以这种方式声明my_var,那么my_var会被视为常数或变量,尤其是在定义SYMBOLE的情况下?

1 个答案:

答案 0 :(得分:1)

file2.c中的行不是定义,它是一个声明。 (除非你初始化它)

因此,如果定义了SYMBOLE,则由于变量my_var的类型声明冲突,您的变量将是conisdered常量并导致file2.c中的编译错误。