摘要:
我以前以为GCC默认的C标准是ANSI C,但是看了文档才知道默认标准是C90 with GNU extensions。"extensions"有那些?看这里:http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C-Extensions如果想要返璞归真,只遵循ANSI C,编译时加上-ansi选项即可(再加-pedantic选项,确保编译器使用该标准)。加上这个选项后,你会发现好多平时无错的地方,编译时却出错。最普遍的错误是"// 开头的单行注释",因为它在ANSI C中是不允许的,所以整行报错。来看一 阅读全文
摘要:
VC++支持ANSI C毋庸置疑,不过对于是否支持C99,我倒看到两种说法:1. 不支持C99.http://en.wikipedia.org/wiki/Visual_C%2B%2B#Issues2. 支持C99的个别特性.http://en.wikipedia.org/wiki/ANSI_C#Compilers_supporting_ANSI_Chttp://social.msdn.microsoft.com/Forums/pl-PL/vclanguage/thread/8c3ce91d-e4bc-4a95-a122-b19cac1e94aa到底是神马情况? 我试验了VC++ 2010,可以 阅读全文
摘要:
写在前面:这是我看一些资料然后总结的,肯定会有出入。不妥之处,望多批评指正。预定义宏,顾名思义,就是事先已经定义好的宏。有两个特性:无需提供它们的定义,就只可以直接使用。预定义宏没有参数,且不可被重定义。预定义宏一般分为两类:标准预定义宏,编译器预定义宏。1 标准预定义宏(Standard Predefined Macros) 标准预定义宏由相关语言标准指定。因此所有使用该标准的编译器都可以使用这些宏。ANSI C指定了以下预定义宏:__FILE____LINE____DATE____STDC____TIME____TIMESTAMP__ C99在__FILE__、__LINE__的之外... 阅读全文