C++中#define,#ifdef和#endif的作用

今天发现一个好用的东西,自己在编写code时经常需要测试,但是每次呢测试的代码写了删删了写。很麻烦,运行也不美观。希望运行时不再显示之前测试好的代码,那边的测试代码就得全部注释或者删除再编译;

今天无意发现这个#define,#ifdef 和#endif 有这么个作用!

举例如下:

/*************************************************************************
> File Name: main.cpp
> Author: 笔耕先生
> Mail: [email protected]
> Created Time: 2018年10月29日 星期一 14时42分35秒
************************************************************************/

#include<iostream>
#include<string>

using namespace std;

#define test_debug

int main(){
string a;
cout<<"Please say you love me: " <<endl;
cin >> a;
#ifdef test_debug
cout << "Hahahaha~~~Mua~~~" <<endl;
#endif

return 0;
}

编译:

? test g++ -g main.cpp -o abc

运行结果如下:

? test ./abc

Please say you love me:
I love you
Hahahaha~~~Mua~~~

如果不想看到测试的那段,直接将#define test_debug双斜杠(//)注释掉即可

然后编译运行结果如下:

? test ./abc

Please say you love me: 
I love you
没有了最后一句:Hahahaha~~~Mua~~~!!!

是不是很神奇,反正觉得挺好玩,挺实用!

原文地址:https://www.cnblogs.com/maq-aegean/p/9870688.html

时间: 2024-10-14 05:37:09

C++中#define,#ifdef和#endif的作用的相关文章

C/C++预处理指令#define,#ifdef,#ifndef,#endif… (转)

本文转自博文C/C++预处理指令#define,#ifdef,#ifndef,#endif….这篇博文写得特别好,特转载. 本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #en

转:C++中 #ifdef 和#endif的作用

一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有,即: #ifdef 程

C/C++预处理指令#define,#ifdef,#ifndef,#endif…

本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif结束一个#if……#else条件编译块 #error停止编译并显示错误信息 本来只是想了解一下#ifdef,#ifnd

java 仿c/c++ 中#define #ifdef 的功能做Debug(转载)

转载自:http://livehappy.iteye.com/blog/865277 C代码 #define DEBUG 调试完成后只需将这个define命令行删除即可.有人可能觉得不用条件编译也可达此目的,即在调试时加一批printf语句,调试后一一将printf语句删除去.的确,这是可以的.但是,当调试时加的printf语句比较多时,修改的工作量是很大的.用条件编译,则不必一一删改printf语句,只需删除前面的一条“#define DEBUG”命令即可,这时所有的用DEBUG作标识符的条件

【转】C++中#if #ifdef 的作用

一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件 编译".有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句. 条件编译命令最常见的形式为: /////////#ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2. 其中#else部分也可以没有,即

#ifndef #define #ifdef 的区别与联系

文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把头文件的内容都放在#ifndef和#endif中吧.不管你的头文件会不会被多个文件引用,你都要加上这个.一般格式是这样的: 文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个

#ifdef #else #endif #if #ifndef 的用法

预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.  关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1 预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文

C++中#define用法

http://blog.sina.com.cn/s/blog_686188ef0100klku.html #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利.1 #define命令剖析1.1 #define的概念#define命令是C语言中

#ifdef #else #endif #fi #ifndef 的用法

预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.  关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了.这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明.以下分3种情况: 1:情况1: #ifdef _XXXX ...程序段1... #else ...程序