linux c 预编译宏 ifdef,C语言各种预编译宏总结

查看gcc所定义的宏的命令:cpp -dM /dev/null

命令一: cpp -dM /dev/null

命令二: gcc -dM -E - < /dev/null

1: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__、_HPUX_SOURCE;

AIX: _AIX、_AIX32、_AIX41、_AIX43、_AIX51、_AIX52;

CPU: __x86_64、__x86_64__(Intel); __amd64、__amd64__(AMD); sparc、__sparc、__sparc__(Sun-SPARC);

2:Compiler MACRO:

__STDC__: ANSI C标志,值为1,说明兼容ANSI C标准;

__GNUC__: 它是gcc编译器编译代码时预定义的一个宏;需要针对gcc编写代码时,可以使用这个宏进行条件编译;__GNUC__的值表示gcc的版本号,需要针对特定版本的gcc编写代码时,也可以使用这个宏进行条件编译;__GNUC__的类型是int;

__GNUC_MINOR__: gcc的次版本号;

__GNUC_PATCHLEVEL__: gcc的修订号; 比如:gcc3.4.6版本,则__GNUC__=3;__GNUC_MINOR__=4;__GNUC_PATCHLEVEL__=6;

__GLIBC__: glib的主版本号;

__GLIBC_MINOR__: glib的次版本号;

3:常量宏:

__PRETTY_FUNCTION__: 记录当前函数的函数头信息;

__FUNCTION__: 仅记录当前函数名;

__VA_ARGS__: 保存了可变参数列表"...";

4.C/C++原文件扩展名:

.C:用C语言编写的源代码文件;

.CPP/.CXX:用C++语言编写的源代码文件;

.H/.HPP/.HXX:用C/C++语言编写的头文件;

5.main函数的四种写法:

int main(void)

int main(int argc)

int main(int argc, char** argv)

int main(int argc, char** argv, char** env)

6.VC++的版本号宏:

Visual Studio 5.0  --> VC++5.0 _MSC_VER = 1100

Visual Studio 6.0  --> VC++6.0 _MSC_VER = 1200

Visual Studio 2002 --> VC++7.0 _MSC_VER = 1300

Visual Studio 2003 --> VC++7.1 _MSC_VER = 1310

Visual Studio 2005 --> VC++8.0 _MSC_VER = 1400

Visual Studio 2008 --> VC++9.0 _MSC_VER = 1500

其他宏:

_DEBUG

当我们的工程设置为debug版编译时,编译器会定义该宏;该宏与#ifdef等

预编译语句一起进行条件编译,以区分debug和release版本功能。

ASSERT

断言,当该宏后面的语句值为0时引起程序中断,只在debug版中有效。

VERIFY

与ASSERT功能类似,在debug和release版本中均有效。

ASSERT_VALID

检查后面参数指针是否为空,只在debug版中有效。

TRACE

格式化输出字符串信息。

_ATL_VER

指明ATL的版本。

_CLR_VER

指明公共运行时(commonlanguage runtime)的版本。

_COUNTER_

一个从0开始的全局的计数器,每次用于源文件或在源文件中被引用头文件时,自动加1。

_DLL

当工程类型为动态链接库时,该值为1。

WINVER

指示Windows版本。

_MFC_VER

指示MFC版本。

_MSC_VER

指示编译器版本。

_WIN32

为Win32和Win64程序定义。

7.gcc 宏:

* __NASE_FILE__ 源文件的完整路径名,和 __FILE__ 不同,被引用的文件仍然是原来文件名     * __CHAR_UNSIGNED__ 用于指定该机器上 char 是无符号类型     * __cplusplus 使用 C++ 编译器编译     * __DATE__ 编译时的日期     * __FILE__ 编译文件名     * __func__ 同 __FUNCTION__     * __GNUC__ GCC 的主版本号     * __GNUC_MINOR__ GCC 的次版本号     * __GNUC_PATCHLEVEL__ GCC 的修订号     * __GNUG__ 由 C++ 编译程序定义     * __INCLUDE_LEVEL__ 指 #include 的层次     * __LINE__ 当前行号     * __NO_INLINE__ 不允许 inline     * __OPTIMIZE__ 打开了优化选项     * __OPTIMIZE_SIZE__ 打开了对编译出文件尺寸的优化     * __STDC__ 表示该程序符合 ansi C 标准     * __STDC_HOSTED__ 表示宿主具有标准 C 的环境     * __STDC_VERSION__ 标准 C 制定时间     * __TIME__ 编译时系统时间 __VERSION__ GCC 版本号     * 预定义的宏     * __NASE_FILE__ 源文件的完整路径名,和 __FILE__ 不同,被引用的文件仍然是原来文件名     * __CHAR_UNSIGNED__ 用于指定该机器上 char 是无符号类型     * __cplusplus 使用 C++ 编译器编译     * __DATE__ 编译时的日期     * __FILE__ 编译文件名     * __func__ 同 __FUNCTION__     * __GNUC__ GCC 的主版本号     * __GNUC_MINOR__ GCC 的次版本号     * __GNUC_PATCHLEVEL__ GCC 的修订号     * __GNUG__ 由 C++ 编译程序定义     * __INCLUDE_LEVEL__ 指 #include 的层次     * __LINE__ 当前行号     * __NO_INLINE__ 不允许 inline     * __OPTIMIZE__ 打开了优化选项     * __OPTIMIZE_SIZE__ 打开了对编译出文件尺寸的优化     * __STDC__ 表示该程序符合 ansi C 标准     * __STDC_HOSTED__ 表示宿主具有标准 C 的环境     * __STDC_VERSION__ 标准 C 制定时间     * __TIME__ 编译时系统时间 __VERSION__ GCC 版本号    * 预定义的宏     * __NASE_FILE__ 源文件的完整路径名,和 __FILE__ 不同,被引用的文件仍然是原来文件名     * __CHAR_UNSIGNED__ 用于指定该机器上 char 是无符号类型     * __cplusplus 使用 C++ 编译器编译     * __DATE__ 编译时的日期     * __FILE__ 编译文件名     * __func__ 同 __FUNCTION__     * __GNUC__ GCC 的主版本号     * __GNUC_MINOR__ GCC 的次版本号     * __GNUC_PATCHLEVEL__ GCC 的修订号     * __GNUG__ 由 C++ 编译程序定义     * __INCLUDE_LEVEL__ 指 #include 的层次     * __LINE__ 当前行号     * __NO_INLINE__ 不允许 inline     * __OPTIMIZE__ 打开了优化选项     * __OPTIMIZE_SIZE__ 打开了对编译出文件尺寸的优化     * __STDC__ 表示该程序符合 ansi C 标准     * __STDC_HOSTED__ 表示宿主具有标准 C 的环境     * __STDC_VERSION__ 标准 C 制定时间     * __TIME__ 编译时系统时间 __VERSION__ GCC 版本号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值