T_Tony_T T_Tony_T
Still
关注数: 0 粉丝数: 8 发帖数: 1,466 关注贴吧数: 8
gcc 的“-ansi”参数会屏蔽 C99 特性? 我查到的资料上只是说这一参数会禁制 GNU C 与 ANSI C 的不一致,但我在编译含有下列语句的程序时 Dev-C++ 报了错:(我已经加了“-std=c99”参数)for (int i = 0; i < SIZE; i++) /* 语句 */在去掉“-ansi”后则可以正常编译。(而且也可以使用“//”来注释了)是不是“-ansi”和“-std=c99”冲突啊?附:我找到的有关“-ansi”的解释-ansi 支持符合ANSI标准的C程序. 这样就会关闭GNU C中某些不兼容ANSI C的特性,例如asm, inline和 typeof关键字,以及诸如unix和vax这些表明当前系统类型的预定义宏.同时开启 不受欢迎和极少使用的ANSI trigraph特性,以及禁止`$'成为标识符的一部分. 尽管使用了`-ansi'选项,下面这些可选的关键字, __asm__, __extension__, __inline__和__typeof__仍然有效.你当然不会把 他们用在ANSI C程序中,但可以把他们放在头文件里,因为编译包含这些头文件的程序时,可能会指定 `-ansi'选项.另外一些预定义宏,如__unix__和__vax__,无论有没有使用 `-ansi'选项,始终有效. 使用`-ansi'选项不会自动拒绝编译非ANSI程序,除非增加`-pedantic'选项作为 `-ansi'选项的补充. 使用`-ansi'选项的时候,预处理器会预定义一个__STRICT_ANSI__宏.有些头文件 关注此宏,以避免声明某些函数,或者避免定义某些宏,这些函数和宏不被ANSI标准调用;这样就不会干扰在其他地方 使用这些名字的程序了.
1 下一页