首页 > 后端开发 > C++ > 正文

为什么我的 Win32 控制台应用程序中出现'错误 LNK2005:'int k”已定义”?

DDD
发布: 2024-10-30 08:39:27
原创
919 人浏览过

Why Am I Getting

Error LNK2005: "int k" Already Defined

当链接 Win32 控制台应用程序与多个 C 文件时,出现错误“error LNK2005:可能会出现“int k”(?a@@3HA) 已在 A.obj 中定义。当在多个文件中定义同名变量时,会出现此错误。

在给定的示例中,A.cpp 和 B.cpp 都定义了变量 k。根据单一定义规则,每个全局变量或函数必须有一个定义。多个定义会导致歧义和链接错误。

解决方案:

要解决此错误,您可以使用以下方法:

使用无名命名空间(匿名命名空间):

如果变量 k 打算对每个文件私有,请使用无名命名空间来防止符号名称冲突。

<code class="cpp">namespace 
{
    int k;
}</code>
登录后复制

这会隔离每个文件中的符号 k,防止其他文件访问或重新定义它。

在单独的文件中声明和定义变量:

如果需要共享跨多个文件的变量 k,使用 extern 在头文件中声明,并在单独的编译单元中定义。

A.h

<code class="cpp">extern int k;</code>
登录后复制

A.cpp

<code class="cpp">#include "A.h"
int k = 0;</code>
登录后复制

B.cpp

<code class="cpp">#include "A.h"

// Use `k` anywhere in the file</code>
登录后复制

通过在头文件中将 k 声明为 extern,其他文件就可以访问并使用它无需重新定义它。

以上是为什么我的 Win32 控制台应用程序中出现'错误 LNK2005:'int k”已定义”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!