对于纯C的Visual Sutdio,是否有等效的“ -fno-common”编译选项?

问题描述 投票:0回答:1

我是强弱符号概念的新手。对于以下示例(纯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中是否有等效的编译选项? (如果我的描述有误,请纠正我)

c hyperlink compilation symbols
1个回答
0
投票

这是一个链接选项:不是编译选项。除了在正在编译的文件中之外,编译器对在其他任何地方声明x一无所知。但是,链接器看到两个x声明,并将生成错误2005或1169。

© www.soinside.com 2019 - 2024. All rights reserved.