1.6 它很棒, 但它符合标准吗?
unportable code
bad code
portable code
1.7 编译限制
每一个ANSI C编译器必须能够支持:
. 在函数定义中形参数量的上限至少可以达到31个
. 在函数调用时实参数量的上限至少可以达到31个
. 在一条源码行至少可以有509个字符
. 在表达式中至少支持32层嵌套的括号
. long int的最大值不得小于 2 147 483 647 (32位最大值)
等等.
1.8 ANSI C 标准的结构
第4节 介绍 (共5页)
第5节 环境(共13页)
第6节 C语言(共78页) (参考Dennis Ritchie "The C reference manual", 包括The C Programming Language 的附录A)
第7节 C运行库(共81页)
1.9 阅读ANSI C 标准, 寻找乐趣和裨益
foo(const char **p) {}
main(int argc, char **argv)
{
foo(argv);
}
line 5: warning: argument is incompatible with prototype
要使代码合法,必须满足下列条件之一:
两个操作数都是指向有限定符或无限定符的相容类型的指针,
左边指针所指向的类型必须具有右边指针所指向类型的全部限定符.
1.10 安静的改变究竟有多安静
1.11 轻松一下
由编译器定义的Pragmas效果