gpt4 book ai didi

c - Visual 2005 中的错误 Link2005

转载 作者:行者123 更新时间:2023-11-30 15:40:45 24 4
gpt4 key购买 nike

我用 Visual C++ 编写了一个 C 程序。

test2.cpp

    #pragma startup pragmaEgFun1
void pragmaEgFun1(){
printf("Hello 1");
}

测试1.cpp

    #include "test2.cpp"
int main{
printf("Hello 2");
}

该程序用于测试 pragma 预处理器指令。但我收到错误错误

error LNK2005: "void __cdecl pragmaEgFun1(void)" (?pragmaEgFun1@@YAXXZ) already defined in test1.obj

最佳答案

解决这个问题的方法有以下三种:

  1. 只需删除 #include来自 test1.cpp 的线路。由于您没有调用该函数,因此您不需要包含它。 pragma startup应该注意该函数被调用并且它将可用,因为 VC 将链接它。

  2. 重命名 test2.cpptest2.h并将其包含在 test1.cpp 中。但这不是最佳实践,因为函数通常不应该位于头文件中,即使编译器允许这样做。

  3. 您可以将函数放在 test2.cpp 中直接进入test1.cpp ,因为你实际上并不需要它。

为了回答你的评论 - 通常你将函数放入 .c/.cpp文件和声明、原型(prototype)、定义、宏等放入 .h文件。虽然这不是由编译器决定的,但良好的编码实践有助于避免您在问题中发布的此类问题。

关于c - Visual 2005 中的错误 Link2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20853714/

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