如何在C语言中解决C2054
我目前正在使用MicrosoftVisualStudio开发一个C程序。我在构建头文件时遇到了这个问题,我用谷歌搜索了好几种方法,但都没有解决 这是头文件如何在C语言中解决C2054,c,C,我目前正在使用MicrosoftVisualStudio开发一个C程序。我在构建头文件时遇到了这个问题,我用谷歌搜索了好几种方法,但都没有解决 这是头文件 #pragma #ifndef DATA_H #define DATA_H namespace { //defailt court number int _b
#pragma
#ifndef DATA_H
#define DATA_H
namespace
{
//defailt court number
int _badminton_court, squash_court, tennis_court, futsal_court;
//default court label
char a = 'A', b = 'B', c = 'C', d = 'D';
}
#endif
修改后
#pragma once
#ifndef DATA_H
#define DATA_H
//defailt court number
extern int _badminton_court, squash_court, tennis_court, futsal_court;
//default court label
extern char a = 'A', b = 'B', c = 'C', d = 'D';
#endif
错误会变得更严重
错误(已更改):
错误:
Error 1 error C2054: expected '(' to follow 'namespace' c:\users\asus\dropbox\assignment\ckah\assignment_c\assignment_c\data.h 6 1 Assignment_C
Error 4 error C2054: expected '(' to follow 'namespace' c:\users\asus\dropbox\assignment\ckah\assignment_c\assignment_c\data.h 6 1 Assignment_C
好吧,我这样设计它,因为我只有很少的.c文件可以访问同一个变量在C. 中,C++中没有<代码>命名空间< /代码> s。
也许你想写一个C++程序?< /p>嗯,由于某种限制,我必须在C中完成它,无论如何要像修改命名空间或其他方法一样解决问题。@user694733我尝试删除它,它说variab已经在我的另一个.c文件中定义了。@user3122881然后只在一个地方定义它们,就像它应该的那样。除非-如果你需要它们彼此分开,那么让它们
static
@user3122881在你的问题注释中看到我的旁注。你不需要给你的命名空间命名吗?C中没有命名空间。你的编译器认为你正在写一个名为“namespace”的方法,它正在寻找paren(s).Sidenote:您应该只将变量声明放入头文件(如extern int networking\u court;
)。定义应该放在.c文件中(比如int networks\u court=2;
)。不要声明,更不用说初始化头文件中的变量了。。。别这样。这些错误是不言自明的:你仍然有名称空间'd代码在某处,C不做名称空间。。。
Error 1 error C2054: expected '(' to follow 'namespace' c:\users\asus\dropbox\assignment\ckah\assignment_c\assignment_c\data.h 6 1 Assignment_C
Error 4 error C2054: expected '(' to follow 'namespace' c:\users\asus\dropbox\assignment\ckah\assignment_c\assignment_c\data.h 6 1 Assignment_C