我是强弱符号概念的新手。对于以下示例(纯C)代码,x
定义了两次,一个为强,一个为弱。我想使我的编译器报告错误:
foo.c
:
#include <stdio.h>
void f(void);
int x = 15213;
int main(){
f();
printf("x = %d\n", x);
return 0;
}
bar.c
int x;
void f(){
x = 15212;
}
对于gcc,“-fno-common”是我想要的:
gcc -o foobar foo.c bar.c -fno-common因此,它报告重新定义的符号(x)。
Visual Studio中是否有等效的编译选项? (如果我的描述有误,请纠正我)
这是一个链接选项:不是编译选项。除了在正在编译的文件中之外,编译器对在其他任何地方声明x一无所知。但是,链接器看到两个x声明,并将生成错误2005或1169。