2014-02-19 33 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

回答