我是一名 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++ 编程,但我不明白需要这样的声明和语法。我错过了什么吗?有没有什么书或网站可以让我了解这种语句的使用和必要性?
注意:我是一名电气工程师,因此在大学期间接触编程的机会有限。我能做的大部分事情都是自学的。
最佳答案
这些是 C++ 宏。我相信 C# 也有类似的预处理器语句,如 #if、#elif、#else、#endif
http://msdn.microsoft.com/en-us/library/ed8yd1ha.aspx
C++ 中某些宏的目的是根据各种构建条件编译您的代码。
关于c# - C++大型程序/框架构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21872986/