2014-02-19 31 views
1

我是一位c#程序員,業餘愛好者,對低級和高級程序都有着濃厚的興趣。很多時候,我遇到的是有這樣的代碼大量的C/C++項目 - >C++大規模程序/框架構建

#if defined(LUA_COMPAT_GETN) 
LUALIB_API int (luaL_getn) (lua_State *L, int t); 
LUALIB_API void (luaL_setn) (lua_State *L, int t, int n); 
#else 
#define luaL_getn(L,i)   ((int)lua_objlen(L, i)) 
#define luaL_setn(L,i,j)  ((void)0) /* no op! */ 
#endif 

#if defined(LUA_COMPAT_OPENLIB) 
#define luaI_openlib luaL_openlib 
#endif 


/* extra error code for `luaL_load' */ 
#define LUA_ERRFILE  (LUA_ERRERR+1) 

我很難環繞這一切我的頭,我能夠理解和程序的C#很好。我可以用C/C++進行編程,但我不明白這種聲明和語法的需要。我錯過了什麼嗎?有沒有一本書或網站可以幫助我瞭解這些陳述的用途和需要?

注意:我是一名電氣工程師,因此在大學裏接觸編程的機會有限。我能做的大部分工作都是自學的。

+0

這一切都取決於你想要做什麼。你在這裏看到的是C宏和函數聲明。看看[這](http://stackoverflow.com/questions/19418908/creating-a-portable-library-to-run-on-both-linux-and-windows)。你無法繞過[閱讀一些C++](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 –

+0

這些是#定義,它正確地處理了一個符號和映射到函數聲明。如果用戶正在構建標誌LUA_COMPAT_GETN,則lual_getn會以其他方式調用該函數,並將其映射到另一個函數。 – rerun

回答