C - 常用预定义宏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C - 常用预定义宏相关的知识,希望对你有一定的参考价值。

预定义宏
  __DATE__      字符串, 进行预处理的日期("Mmm dd yyyy", 如May 27 2006)
  __TIME__       字符串, 源文件的编译时间("hh:mm:ss", 如09:11:10)
  __FILE__        字符串, 代表当前源代码文件名(包含详细路径, 如F:/a.c)
  __LINE__        整数值, 代表当前源代码文件中的行号
  __STDC__      布尔值, 表示该实现严格遵循ANSIC标准
  __STDC_VERSION__长整型值, 表示编译器所遵循的C标准的版本号(yyyymmL,如199101L)
  __func__        字符串, 当前所在函数名(C99标准)
  __FUNCTION__   字符串, 同__func__, 不建议使用
  __PRETTY_FUNCTION__在C中, 同__func__; 而在C++中, 则记录了当前函数的头信息
  __VA_ARGS__    保存了可变参数列表 "..."
  __cplusplus        长整型值, 表示了C++的版本号(yyyymmL, 如199711L)

/* 对于__DATE__, __TIME__, 可以获取编译时间 */
char *creationDate = __DATE__","__TIME__;
sscanf(creationDate, "$s %d %d,, %d:%d:%d", month, &day, &year, &hour, &min, &sec);


OS Macro
  Windows:    _WIN32, WIN32, _WIN64
  Unix:         unix, __unix, __unix__
  Linux:        linux, __linux, __linux__, __gnu_linux__
  SunOS/Solaris:  __SVR4, __svr4__, sun, __sun, __sun__, sparc, __sparc, __sparc__
  Hpux:        __hppa, __hppa__, __hpux, __hpux__, _HUPX_SOURCE
  AIX:            _AIX, _AIX32, _AIX41, _AIX43, _AIX51, _AIX52
  CPU:        __x84_64, __x86_64__, __amd64, __amd64__, sparc, __sparc, __sparc__

Comiler Macro
  __STDC__:     布尔值, 值为1时, 说明兼容ANSIC标准
  __GNUC__:     整数值, gcc编译器预定义的一个宏, 表示gcc的主版本号
  __GNUC_MINOR__: 整数值, gcc的次版本号
  __GNUC_PATHLEVEL__: 整数值, gcc的修订号
  __GLIBC__:     整数值, glib的主版本号
  __GLIBC_MINOR__: 整数值, glib的次版本号

  比如gcc3.4.5版本, 则__GNUC__==3, __GNUC_MINOR__==4, __GNUC_PATHLEVEL__==6

以上是关于C - 常用预定义宏的主要内容,如果未能解决你的问题,请参考以下文章

C语言常用的宏定义

[转]C语言宏定义技巧

c语言的宏定义

20个C语言中常用宏定义总结

linux C宏定义 转

IDA逆向常用宏定义