命名空间编译问题

Namespace compilation issues

本文关键字:问题 编译 命名空间      更新时间:2023-10-16

我是Visual Studio的新手(使用的是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 : '}'

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

首先,using namespace LLL_NWK在这里不合适。您正在namespace LLL_NWK的外部声明和定义函数void lllInit()。您需要将定义放在命名空间中,可以这样做:

void LLL_NWK::lllInit()
{
}

或者像这样:

namespace LLL_NWK
{
   void lllInit()
   {
   }
}

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

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