我实际上是一名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 :(得分:1)
这些是C ++宏。我相信C#也有类似的预处理器语句,如#if,#elif,#else,#endif
http://msdn.microsoft.com/en-us/library/ed8yd1ha.aspx
C ++中某些宏的目的是根据各种构建条件编译代码。