Я программист 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++, но я не понимаю необходимости в таких объявлениях и синтаксисе. Я что-то упускаю? Есть ли книга или веб-сайт, который я могу узнать об использовании и необходимости в таких заявлениях?
Примечание: Я инженер-электрик, поэтому имею ограниченный доступ к программированию в колледже. Большая часть того, что я могу сделать, это самообучение.
все зависит от того, что вы хотите сделать. Здесь вы видите макросы 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). –
Это # определяет, которые правильно обрабатывают взятие символа и сопоставление с объявлением функции. Если пользователь создает флаг LUA_COMPAT_GETN, тогда lual_getn вызывает эту функцию другим, то есть сопоставляет ее с другой функцией. – rerun