Я программист на 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 ++ является компиляция вашего кода в зависимости от различных условий сборки.
Других решений пока нет …