绝密笔记 | 基础知识 | 每日一面(74)

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:malloc(0) 有什么用?返回一个控指针还是指向 0 字节的指针?

小林:ANSI/ISO 标准声称它可能返回任意一种; 其行为由实现定义。

读者:为什么 ANSI 标准规定了外部标示符的长度和大小写限制?

小林;问题在于连接器既不受 ANSI/ISO 标准的控制也不遵守 C 编译器开发者的规定。限制仅限于标识符开始的几个字符而不是整个标识符。在原来的 ANSI 标准中限制为 6 个字符, 但在 C99 中放宽到了 31 个字符。

读者:我的编译对最简单的测试程序报出了一大堆的语法错误。

小林:可能是个 ANSI 前的编译器, 不能接受函数原型或类似的东西。

读者:为什么有些 ASNI/ISO 标准库函数未定义?我明明使用的就是

ANSI 编译器。

小林:你很可能有一个接受 ANSI 语法的编译器, 但并没有安装兼容 ANSI 的头文件或运行库。事实上, 这种情形在使用非供货商提供的编译器, 如 gcc 时非常常见。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

正文完