测试一些代码,包括term.h
,我看到一些使用常用标识符的奇怪错误,例如tab
or columns
。这是因为这个头文件定义了很多宏。这里有些例子:
/* from term.h */
#define columns CUR Numbers[0]
#define lines CUR Numbers[2]
#define bell CUR Strings[1]
#define insert_line CUR Strings[53]
#define tab CUR Strings[134]
但是,我没有找到有关这些宏常量的任何文档。这似乎是访问TERMINAL
数据结构某些成员的捷径。当然,解决方案是针对#undef
源代码中使用的每个标识符。但它是非常严格的。
所以我的问题是:为什么不给 的标识符加上前缀term.h
?
它们经常在实际源代码中用作局部变量,因此会导致难以理解的错误。