关于main() 的多重定义
#ifndef PROTO /* don't want a prototype for main() */int
# ifdef VIMDLL
_export
# endif
# ifdef FEAT_GUI_MSWIN
#ifdef __BORLANDC__
_cdecl
#endif
VimMain
# else
main
# endif
(argc, argv)
int argc;
char **argv;
谁能解释一下 这个是什么情况这之间if 和else 还有 endif都是怎么对应的?
本帖最后由 565123 于 2013-3-9 22:44 编辑
有 #if 开头的就要有一个 #endif
你好像少了一个 #endif
这样只有在 PROTO 未被定义时才有main函数
#ifndef PROTO /* don't want a prototype for main() */
int
# ifdef VIMDLL
_export
# endif
# ifdef FEAT_GUI_MSWIN
#ifdef __BORLANDC__
_cdecl
#endif
VimMain
# else
main
# endif
(int argc, char *argv[]) {
}
#endif//这里还要再加一个#endif
这就跟实际的ifelse是一样的,唯一的就是多了个endif,endif总是跟上面离它最近的一个ifdef 或者ifnedf对应, 但是例外就是最后一个endif一般都是跟最开始的那个ifndef或者ifdef对应。
其实我也是蒙的。。:lol
#if与#endif都是条件预编译指令,#if总是和离它最近的#endif构成一对 我也不太懂帮忙顶贴{:5_109:} 还是感觉少了一个#endif,求解 {:1_1:} {:1_1:}
页:
[1]