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

ответ

1

Это C++ Макросы. Я считаю, что C# также имеет аналогичные инструкции препроцессора, такие как #if, #elif, #else, #endif
http://msdn.microsoft.com/en-us/library/ed8yd1ha.aspx
Цель некоторых макросов на C++ состоит в том, чтобы скомпилировать ваш код в зависимости от различных условий построения.

Смежные вопросы