首页 > 解决方案 > 符号已定义

问题描述

有2个这样的简单文件:

主要.c:

#include "Initialization.cpp"
int main() {    
    return 0;
}

和初始化.cpp:

int main2() {
    return 0;
}

我收到错误消息:

..."int __cdecl main2(void)" (?main2@@YAHXZ) already defined in Initialization.obj...

当我第一次遵守程序时,一切都很好,这很奇怪。重新编译后,此错误开始出现。

PS。我正在使用 Visual Studio c++ 2019

标签: c++

解决方案


预处理器将包含文件中的所有内容复制到Main.c其中

int main2() {
    return 0;
}

int main() {    
    return 0;
}

两者Initialization.oMain.o现在都有 main2(). 因此,您打破了单一定义规则并调用未定义的行为。


推荐阅读