关于UNIX功能测试宏

发表于:2014-9-15 11:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cougar0709    来源:51Testing软件测试网采编

  UNIX的功能测试宏,在头文件中定义了很多POSIX.1和XPG3的符号。但是除了POSIX.1和XPG3定义外,大多数实现在这些头文件中也加上了他们自己的定义。如果在编译一个程序时,希望它只是用POSIX定义而不使用任何实现定义的限制,那么就需要定义常数_POSIX_SOURCE,所有POSIX.1头文件中都是用此常数。当该常数定义时,就能排除任何实现专有的定义。
  常数_POSIX_SOURCE及对应的常数_XOPEN_SOURCE被称为功能性测试宏(feature test macro)。所有功能测试宏都以下划线开始。要使用他们时,通常在cc命令行中以下列方式定义:
  cc -D_POSIX_SOURCE file.c
  这使得在C程序包括任何头文件之前,定义了功能测试宏。如果我们仅想用POSIX.1定义,那么也可以将源文件的第一行设置为:
  #define _POSIX_SOURCE 1
  另一个功能测试宏是:__STDC__,它由符合ANSI C标准的编译程序自动定义。这样就允许我们编写ANSI C编译程序和非ANSI C编译程序都能编译的程序。例如,一个头文件可能会是:
void *myfunc(const char*, int);
#else
void *myfunc();
#endif
#ifdef __STDC__
void *myfunc(const char*, int);
#else
void *myfunc();
#endif
  这样就能发挥ANSI C原型功能的长处,要注意在开始和结束的两个连续的下划线常常打印成一个长下划线。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号