关于UNIX功能测试宏

简介:
 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原型功能的长处,要注意在开始和结束的两个连续的下划线常常打印成一个长下划线。

最新内容请见作者的GitHub页:http://qaseven.github.io/
相关文章
|
测试技术
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
1211 0
|
Web App开发 安全 Java
《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
【2月更文挑战第16天】本文介绍了如何通过查看源码理解Selenium启动Chrome浏览器的过程。首先,展示了启动Chrome的Java代码,包括设置系统属性、创建WebDriver实例、最大化窗口、设置隐性等待、打开网站、获取页面标题以及关闭浏览器。文章还讲解了包(package)、import导入、setProperty设置系统属性、WebDriver接口、driver实例、manage方法、get方法加载网页以及quit方法退出浏览器的基本概念和作用。适合没有Java基础的读者了解Selenium与Java的交互方式。
219 3
|
测试技术
E2512 功能测试宏的参数必须是简单标识符
E2512 功能测试宏的参数必须是简单标识符
748 0
E2512 功能测试宏的参数必须是简单标识符
|
Unix 测试技术 C语言
《UNIX环境高级编程(第3版)》——2.7 功能测试宏
如前所述,头文件定义了很多POSIX.1和XSI符号。但是除了POSIX.1和XSI定义外,大多数实现在这些头文件中也加入了它们自己的定义。如果在编译一个程序时,希望它只与POSIX的定义相关,而不与任何实现定义的常量冲突,那么就需要定义常量_POSIX_C_SOURCE。
1712 0
|
测试技术 C++
Google C++单元测试框架之宏
一、概述   gtest中,断言的宏可以理解分为两类,一类是ASSERT系列,一类是EXPECT系列;   1、ASSERT_*系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)   2、EXCEPT_*系列的断言,当检查点失败时,继续往下执行;
1481 0
|
Linux
linux定义的几个实用宏案例测试-得闲研究
得闲研究下面几个宏!! #define offsetof(type,memb) (ssize_t)&(((type *)0)->memb); #define msleep(i) usleep((i)*1000) #define die(s) do {perro...
755 0
|
10月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
5月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
968 23