C语言嵌入式 Linux C ARM Linux学习之路

标准库

2019-02-15  本文已影响3人  Leon_Geo

标准库中使用名字的一些限制

  1. 由一个下划线和一个大写字母开头或有两个下划线开头的标识符,属于标准库中保留的标识符,程序不允许以任何目的使用这种形式的标识符。
  2. 由一个下划线开头的标识符被保留。用于文件作用域内的标识符和标记,除非声明在函数内部,否则不应该使用这类标识符。
  3. 在标准库中所有外部链接的标识符被保留,用于作为需要外部链接的标识符。特别是所有标准库函数的名字都被保留。因此即使文件不需要包含stdio.h,也不应该声明一个外部函数printf,因为在标准库中已经有一个同名的函数了。

使用宏隐藏函数

在<ctype.h>中有大量这样成对的函数和宏定义的例子。

int isprint( int c );

并同时把他定义为一个宏:

#define isprint( c ) ((c >= 0x20 && (c) <= 0x7e )
  1. 通过使用#undef指令来删除宏定义,从而可以访问到真实的函数。
#include <ctype.h>
#undef isprint
  1. 通过给名字加圆括号来屏蔽个别宏调用:
(isprint)(c)

预处理器无法分辨出带圆括号的宏,而编译器不会这么容易被欺骗,他任然可以认出isprint函数。

上一篇下一篇

猜你喜欢

热点阅读