gpt4 book ai didi

c++ - "compile as"设置为 'default' 时出现外部符号链接(symbolic link)错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:14 25 4
gpt4 key购买 nike

<分区>

我正在使用 Visual Studio 2013。我在 C 源文件 (file1.c) 中声明了一个全局变量,并用在 C++ 源文件 (file2.c) 中定义的方法中。 cpp).两个文件中包含的 header 将变量声明为 extern。项目属性 C\C++ -> Advanced -> compile as 设置为 defualt,根据文档,这意味着编译器使用文件扩展名来推断文件类型。此设置会导致 unresolved external symbol 链接错误。如果我将此选项设置为 Compile as C codeCompile as C++ code,则项目编译和链接不会出错。我无法理解这种行为。 (顺便说一句,在 linux/GCC 下代码编译正常)。

这是一个重现问题的最小示例:

// file1.h
extern int g_i;

// file1.c
#include "file1.h"
#include "file2.h"

int g_i;
int main() {
g_i = 1;
foo();
return 0;
}

// file2.h
#ifdef __cplusplus
extern "C"
#endif
void foo();

// file2.cpp
#include "file1.h"
#include "file2.h"

void foo() {
int i = g_i;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com