【发布时间】:2013-04-01 21:17:58
【问题描述】:
我正在处理一个C 项目,并且正在尝试使用可在 C++ 中使用的预处理器防护:
#ifndef CONFIG_H
#define CONFIG_H
... exciting stuff in C ....
#endif
在我的源代码中包含这个似乎在 Visual Studio 中没有效果,因为当我在多个文件中包含给定文件(例如 Config.h)时,编译器会给出以下错误:
1>main.obj : error LNK2005: _OPCodes already defined in lib.obj
1>main.obj : error LNK2005: _OPTotal already defined in lib.obj
1>main.obj : error LNK2005: _RegCodes already defined in lib.obj
1>main.obj : error LNK2005: _RegTotal already defined in lib.obj
1>main.obj : error LNK2005: _UDSTotal already defined in lib.obj
谁能给我任何指点(不是双关语)吗?
【问题讨论】:
-
#define CONFIG_G应该是#define CONFIG_H -
@maditya 抱歉,现在是凌晨 3 点,这是我的帖子中的错字。现已修复,但仍无法正常工作。
-
当你说“在我的源代码中包含这个”时,你的意思是你把包含保护放在标题中,而不是放在
.cpp文件中,对吗?在任何情况下,尝试将#pragma once也放在那里,看看会发生什么。 -
我怀疑 AProgrammer 的回答是正确的。
标签: c++ c c-preprocessor guard