C++ 命名空间编译问题

C++ 命名空间编译问题,c++,visual-c++,namespaces,visual-studio-2005,static-libraries,C++,Visual C++,Namespaces,Visual Studio 2005,Static Libraries,我刚开始在VisualStudio工作(我使用的是2005版)。我遇到了一个名称空间的问题,我无法解决 我正在尝试创建一个静态库,稍后将链接到一个应用程序 因此,我有一个XXX.h文件,其中包含以下代码 #ifndef _XXX_X_H #define _XXX_X_H namespace LLL_NWK { void lllInit(); } #endif 我在XXX.c中包含XXX.h,代码如下 #include "XXX.h" using namespace LLL_NWK;

我刚开始在VisualStudio工作(我使用的是2005版)。我遇到了一个名称空间的问题,我无法解决

我正在尝试创建一个静态库,稍后将链接到一个应用程序

因此,我有一个XXX.h文件,其中包含以下代码

#ifndef _XXX_X_H
#define _XXX_X_H

namespace LLL_NWK
{
   void lllInit();
}
#endif
我在XXX.c中包含XXX.h,代码如下

#include "XXX.h"

using namespace LLL_NWK;

void lllInit()
{
}
但是,在构建库时,我遇到以下错误

error C2061: syntax error : identifier 'LLL_NWK'
error C2059: syntax error : ';'
error C2449: found '{' at file scope (missing function header?)
error C2059: syntax error : '}'

我无法找出这个错误的原因。非常感谢您的帮助和指点。

首先,
使用名称空间LLL\u NWK
在这里不合适。您正在
名称空间LLL\u NWK
之外声明和定义一个函数
void lllInit()
。您需要将定义放在名称空间中,可以这样做:

void LLL_NWK::lllInit()
{
}
namespace LLL_NWK
{
   void lllInit()
   {
   }
}
或者像这样:

void LLL_NWK::lllInit()
{
}
namespace LLL_NWK
{
   void lllInit()
   {
   }
}

其次,确保将代码编译为C++

该代码不受C编译器支持-确保将文件名重命名为.cpp而不是.C。在这种情况下,不支持命名空间。请参阅本文:

XXX.c
重命名为
XXX.cc
XXX.cpp
——编译器认为它是普通的
c
代码,而不是
c++
code@AdityaSehgal这并不能解决所有问题。你的代码错误,看看我的答案。胡安点是一个有效的点-所以你最好考虑他刚才说的。上面的代码在定义文件中很容易出错(我很确定我在std中见过使用名称空间来修补名称空间冲突)。但代码仍然有效。@AdamGalarneau对,如果试图使用
LLL\u NWK::lllInit()
,则会导致链接器错误。@AdamGalarneau:谢谢您提供的信息。我们已经做了必要的改变。