584768970 发表于 2012-12-1 19:11:06

关于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 发表于 2012-12-1 19:11:07

本帖最后由 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

Tzdner_C 发表于 2012-12-1 20:48:10

这就跟实际的ifelse是一样的,唯一的就是多了个endif,endif总是跟上面离它最近的一个ifdef 或者ifnedf对应, 但是例外就是最后一个endif一般都是跟最开始的那个ifndef或者ifdef对应。

其实我也是蒙的。。:lol

花开,若相惜 发表于 2012-12-3 19:56:58

#if与#endif都是条件预编译指令,#if总是和离它最近的#endif构成一对

Gw_love_VC. 发表于 2012-12-17 10:08:29

我也不太懂帮忙顶贴{:5_109:}

【red_hat】田野 发表于 2012-12-17 22:13:19

还是感觉少了一个#endif,求解

阔怀 发表于 2015-8-28 11:26:40

{:1_1:}

阔怀 发表于 2015-8-28 11:27:13

{:1_1:}
页: [1]
查看完整版本: 关于main() 的多重定义