我對C++名稱空間有點困惑,以及如何定義它們。我有兩個文件:Lua.h
和Main.cpp
。 Lua.h
包含以下傭工的命名空間中運行的Lua腳本:正確定義具有匿名函數的名稱空間
#ifndef Lua_h
#define Lua_h
#include <lua.hpp>
namespace fabric
{
namespace lua
{
void loadLibs(lua_State * L)
{
static const luaL_Reg luaLibs[] =
{
{ "io", luaopen_io },
{ "base", luaopen_base },
{ NULL, NULL }
};
const luaL_Reg * lib = luaLibs;
for (; lib->func != NULL; lib++)
{
lib->func(L);
lua_settop(L, 0);
}
}
void init(lua_State * L)
{
loadLibs(L);
luaL_dofile(L, "Init.lua");
lua_close(L);
}
}
}
#endif
我Main.cpp
文件試圖使用這些輔助功能運行的Lua腳本:
#include "Lua.h"
int main (int argc, char * argv[])
{
fabric::lua::init();
return 0;
}
但是,當我嘗試編譯Main.cpp
,我得到這個:
Source/Main.cpp:9:3: error: use of undeclared identifier 'fabric'
fabric::lua::init();
^
我只是困惑如何定義這個命名空間。輔助函數的代碼都很好,但Main.cpp
找不到名稱空間。任何人都可以給我一些關於如何在C++中正確定義這個命名空間的指針嗎?
編輯:現在
作品。出於某種原因,我的-I
標誌在編譯時無法工作,因爲我的標頭在Include/
之下。我也將Lua.h
更名爲LuaHelpers.h
。
你的代碼編譯,我沒有任何問題(除了'init'功能錯過參數)。 – soon 2013-05-14 17:54:48
@soon好的。 ; P – beakr 2013-05-14 18:41:03