-
C 的预处理器并不是一个全能的工具。PAn>
注意, 甚至都不能保证有一个单独的程序。PAn>
与其强迫它做一些不适当的事情, 还不如考虑自己写一个专用的预处理工具...
-
你可以向接受const-T 的指针的地方传入T 的指针(任何类型T都适用)。PAn>
但是, PAn>
这个允许在带修饰的指针类型上轻微不匹配的规则(明显的例外)却...
-
有两个程序protoize 和unprotoize 可以在有原型和无原型的函数定义和声明之间相互转换。PAn>
这些程序不能完全完成“经典” C 和...
-
某些构造随编译器和硬件的实现而变化, 这一直是C语言的一个特点。PAn>
这种有意的不严格规定可以让编译器生成效率更高的代码, 而不必让所有程序为了不合理的情况承担额外的负...
-
第一, 保存getchar的返回值的变量必须是int型。PAn>
getchar() 可能返回任何字符值, 包括EOF。PAn>
如果把getchar 的返回值截为...
-
直接的方法是PAn>rand() % N /* 不好*/PAn>试图返回从0 到N ¡ 1 的数字。PAn>
但这个方法不好, 因为许多随机数发生器...
-
如果问题并不是那么简单, 那么回想一下, 电脑一般都是用一种浮点的格式来近似的模拟实数的运算, 注意是近似, 不是完全。PAn>
下溢、误差的累积和其它非常规性是常遇到的麻...
-
为了把printf() 的正确原型说明引入作用域。PAn>对于用可变参数的函数, 编译器可能用不同的调用次序。PAn>
例如, 如果可变参数的调用比固定参数的调用效率...
-
这一段信息不可移植。PAn>
一些旧系统提供一个非标准函数nargs()。PAn>
然而它的可信度值得怀疑, 因为它的典型返回值是参数的字节长度, 而不是参数的个数...
-
“程序在执行前崩溃,用调试器单步跟进,在main()之前死了”PAn>
也许你定义了一个或多个非常大的局部数组(超过上千字节)。PAn>
许...
-
许多地方有可能出错。PAn>
下面是一些通常的检查要点:PAn>1、未初始化的局部变量, 参见问题7.1。PAn>2、整数上溢, 特别是在一些16 比特的机器上...
-
这些功能跟你所用的终端类型(或显示器) 有关。PAn>
你需要使用termcap, terminfo 或curses 类的函数库, 或者系统提供的特殊函数。PAn>
...
-
terminfo, 某些版本的termcap, 以及某些版本的curses 函数库有对这些非ASCII 键的支持。PAn>
典型的, 一个特殊键会发送一个多字符序列(通常以...
-
如果文件大小指的是你从C 程序中可以读进的字符数量, 要得到这个精确的数字可能困难或不可能。PAn>
Unix 系统函数stat() 会给出准确的答案。PAn>
有...
-
试试能否使用opendir() 和readdir() 函数, 它们是POSIX 标准的一部分, 大多数Unix 变体都支持。PAn>
MS-DOS, VMS 和其它系统下也...
-
Unix 和其它一些系统提供了popen() 函数, 它在联通运行命令的进程管道设置了stdio 流, 所以输出可以被读取(或提供输入)。PAn>
记住, 结束使用后, 要...
-
这有可能完全做不到。PAn>
不同的系统使用不同的方法来实现像Unix 系统的全局名字/值功能。PAn>
环境是否可以被运行的进程有效的改变, 以及如果可以, 又怎...
-
“不能使用非标准、依赖系统的函数,程序需要兼容ANSI!”
你很不走运。PAn>
要么你误解了要求, 要么这不可能做到。PAn>
ANSI...
-
它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中,PAn>
但在PAn>
extern int f();PAn>
和...
-
用vprintf(), vfprintf() 或vsprintf()。PAn>
下面是一个error() 函数, 它列印一个出错信息, 在信息前加入字符串“er...