我是 C++ 编码新手,这是我在 Stack Overflow 上的第一篇文章。
我正在使用 Visual C++ 编写基于文本的游戏,并且在此文件中收到 C2084 错误:
//game_system_functions.cpp
#include "basicdefines.h"
namespace
{
using namespace std;
void clear_console()
{
if (system("CLS")) system("clear");
}
}
我觉得这很奇怪,因为它只发生在This文件。所有其他 .cpp 文件在功能上都没有问题,并且格式都相似。
我已经检查并仔细检查了所有代码,并且没有其他名为clear_console的函数。我尝试将函数重命名为一堆随机字母,但仍然遇到相同的错误。同一 .cpp 文件中的其他函数也会出现类似的错误。这个问题困扰了我一周,一直无法解决。
我读过其他帖子error C2084
他们没有这个问题。
对于此错误,我希望得到一些帮助。
谢谢。
附:对于任何格式问题,我深表歉意,正如我在帖子前面所说的,这是我第一次在堆栈溢出上发帖,如果标题有点难以描述,我深表歉意。
OP:
我打算让它保存整个游戏的所有字符串和控制台操作功能,因此程序中的几乎每个文件都包含它
这就是问题所在。它是.cpp
文件不是.h
。它实际上包含符号的定义。
如果您现在包含此文件,则很可能您还包含的其他一些文件也包含此文件。
发生的情况是,在预处理的单元代码中会发生这样的情况:
void clear_console()
{
if (system("CLS")) system("clear");
}
void clear_console()
{
if (system("CLS")) system("clear");
}
现在错误消息有意义了,不是吗?
为了解决这个问题,你必须使用头护卫 http://faculty.cs.niu.edu/~mcmahon/CS241/c241man/node90.html
或者更好的是,修复你的文件结构:A.cpp
永远不应该被包括在内。相反,使用此声明创建一个头文件void clear_console();
. In a .cpp
然后,您可以像以前一样实现该函数,但只包含标头(.h
) file.
另请注意,这对于匿名名称空间来说是不可能的,但它们在这里根本没有任何意义。因此,只需使用常规/命名名称空间或摆脱它即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)