C++预处理定义

我们在编译程序时可以使用-D 选项 并且在后面写上预处理器常量的名字 这样就能在

命令行中定义预处理器常量;

复制代码
	$ CC -DDEBUG main.C

也可以在程序中用#define 指示符定义预处理器常量:

复制代码
 #define DEBUG

编译 C++程序时 编译器自动定义了一个预处理器名字__cplusplus 注意前面有两个下

划线 因此 我们可以根据它来判断该程序是否是 C++程序 以便有条件地包含一些代码

例如:

复制代码
#ifdef __cplusplus
 // 不错 我们要编译 C++
 // extern "C" 
 extern "C"
#endif

在编译标准 C 时 编译器将自动定义名字__STDC__ 当然 __ cplusplus 与__STDC__

不会同时被定义。

另外两个比较有用的预定义名字是 __ LINE__和__FILE__ __LINE__记录文件已经被

编译的行数 __FILE__包含正在被编译的文件的名字 可以这样使用它们

复制代码
if ( element_count == 0 )
cerr << "Error: " << __FILE__
 << " : line " << __LINE__
 << "element_count must be non-zero.\n";

 另外两个预定义名字分别包含当前被编译文件的编译时间 __TIME__ 和日期
__DATE__ 时间格式为 hh:mm:ss 因此如果在上午 8 点 17 分编译一个文件 则时间表
示为 08:17:05 如果这一天是 1996 年 10 月 31 日 星期四 则日期表示为 Oct 31 1996.
相关推荐
jason.zeng@150220713 分钟前
Androidr入门环境搭建
java·kotlin
摇滚侠16 分钟前
整洁的桌面和任务栏 Java 开发工程师提效方法
java·开发语言
笑鸿的学习笔记40 分钟前
qt-C++语法笔记之Qt Graphics View 框架中的类型辨析完全指南
c++·笔记·qt
山居秋暝LS41 分钟前
安装C++版opencv和opencv_contrib
开发语言·c++·opencv
每天都要加油呀!43 分钟前
多租户中间件适配
java·多租户
014-code1 小时前
Java 并发中的原子类
java·开发语言·并发
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么
java·开发语言·后端·面试·代理模式
善恶怪客1 小时前
Java-数组和可变参数
java·开发语言
小编码上说1 小时前
LSH(局部敏感哈希)分桶,海量数据下的相似性搜索解决方案
java·spring boot·缓存·langchain4j·lsh·局部敏感哈希·ai调用优化
谭欣辰1 小时前
LCS(最长公共子序列)详解
开发语言·c++·算法