我有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
的情况下?
答案 0 :(得分:1)
file2.c中的行不是定义,它是一个声明。 (除非你初始化它)
因此,如果定义了SYMBOLE,则由于变量my_var的类型声明冲突,您的变量将是conisdered常量并导致file2.c中的编译错误。