近期由于一些莫名其妙的原因开始学c++,我觉得我哪天要是挂了也是被自己给折腾死的,算了,反正不是折腾死就是被淘汰,当是没事打发时间了,废话不多说,开始今天的主题。

  之前接触的注释就是注释,条件语句就是条件语句,前两天突然遇见一个很高级的术语叫做条件编译,把我理解的前因后果详细地说说清楚吧。

一、注释

  首先从注释开始说起,注释最常见不过,我们也会经常使用,虽然不同语言有不同风格的注释方法,但是很多都是异曲同工,互相之间可以相互借鉴和参考的。C/C++最常用的注释就两种:

  1.  //单行注释

  2.  /*

  *块注释

  */

二、预编译

  1.   接着 牵扯出类似于注释的另一种特别方法叫做:预编译屏蔽。

  格式为:

    #if  0

    #endif

  例子为:

    #if !defined(_WIN32_WCE) && defined(_DEBUG)

    //如果编译环境是WINCE,并且是debug版本,出现在这个if-endif块中的语句就会被编译,否则跳过

    #endif

  把它补充完整就是:

    #if 条件1

    代码段1

    #elif 条件2

    代码段2

    #else

    代码段n

    #endif

  这段语句与if-else的区别是,该语句是条件编译,通过预编译指令设置编译条件,在不同需要的时候编译不同的代码。而if-else则是全部编译,在运行时选择不同的分支执行。

  2.  类似的预编译处理还有宏定义

  #if defined(x)

  ...code...

  #endif

  该语句不需要对x的逻辑值进行判断,只要在程序的宏定义里面定义了x这个宏,就编译中间的code代码段,否则都不编译。取反用#if !defined(x)

√   #ifdef 与 #if defined(x)作用相同

√   #ifndef 与#if !defined(x)作用相同

※  C/C++中所有以#开头的都是预编译指令,就是在正式编译之前,让编译器做一些预处理的工作

条件编译#if #ifdef的更多相关文章

  1. C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)

    转自:http://www.kuqin.com/language/20090806/66164.html 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器.可见预处理过程先于编译器 ...

  2. 史上最全条件编译解析 #ifdef #ifndef #undef #else #endif

    C语言和C++语言程序中广泛存在着#ifdef或#ifndef等条件编译语句,本篇就系统介绍下他们的用法. 这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分 ...

  3. verilog 条件编译命令`ifdef、`else、`endif 的应用

    [摘自夏宇闻<verilog设计教程>]一般情况下,Verilog HDL源程序中所有的行都将参加编译.但是有时希望对其中的一部分内容只有在满足条件才进行编译,也就是对一部分内容指定编译的 ...

  4. uni-app条件编译:#ifdef #ifndef #endif

    语法: // #ifdef %PLATFORM% 这些代码只在该平台编译 // #endif #ifdef :      if defined  仅在某个平台编译 #ifndef :     if n ...

  5. 条件编译#ifdef的妙用详解_透彻

    这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部 分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条 ...

  6. 条件编译ifndef、ifdef、endif

    1.条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif 当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2.  ...

  7. #ifdef、#ifndef、#else、#endif执行条件编译

         我们开发的程序不只在pc端运行,也要在移动端运行.这时程序就要根据机器的环境来执行选择性的编译,如对PC端编译PC端的程序,对移动端编译移动端的程序,这里我们就可以用两组条件编译.     ...

  8. 条件编译#ifdef的妙用详解

    c语言中条件编译相关的预编译指令,包括  #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define           ...

  9. C 和 Object- C 中得 #ifdef 和#ifndef

    很多宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时 ...

随机推荐

  1. 全透明Activity

    第一步:在/res/values/styles里面添加如下代码: <style name="translucent"> <item name="andr ...

  2. ZBrush中该如何调节多个SubTool

    我们学习了人体的基本雕刻,了解了人体结构.比例.骨骼.肌肉对于人物模型雕刻的重要性.本节课对ZBrush中的"Transpose Master"功能进行讲解,这个插件是ZBrush ...

  3. C#学习笔记-Windows窗体自定义初始位置

    根据屏幕大小定义初始位置: (这个不是难,但是最近常常忘记,记着方便查看.) //获取当前屏幕的长和宽 int ScreenX = Screen.PrimaryScreen.Bounds.Width; ...

  4. JS入门学习,写一个简单的选项卡

    /* 经过昨天一整天的纠结和摸索.总结下学习初期我最致命的几个问题…… 1.var oDiv = document.getElementById('');    一定要多输,熟悉后o u什么的字母别搞 ...

  5. UVA - 11584 Partitioning by Palindromes[序列DP]

    UVA - 11584 Partitioning by Palindromes We say a sequence of char- acters is a palindrome if it is t ...

  6. sicily vector有序插入

    实现了简单的vector有序插入,这个题目值得注意的点是1.当vector为空时,需要判断再排除 2.迭代器的使用是此段代码的特点 int insertVector(vector<int> ...

  7. 使用python实现appium的屏幕滑动

    前些日子写一个滑动手机页面的小脚本,看到大家给的内容都是swipe方法,这里对swipe方法做一个小介绍: Swipe(int start x,int start y,int end x,int y, ...

  8. GL_ARRAY_BUFFER 和 GL_ELEMENT_ARRAY_BUFFER

    转载请注明出处.系列教程: webgl-lesson.wysaid.org 第七话, 了解OpenGL的几种Array Buffer,实现大量顶点的批量绘制, 以及映射纹理坐标 每一话都间隔很久,其实 ...

  9. WPF Popup 控件导致被遮挡内容不刷新的原因

    WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...

  10. Oracle转换时间出现的问题:ORA-01810: format code appears twice

    Oralce中的to_date()函数用于将字符串转换为日期对象: to_date( string, [ format_mask ] , [ nls_language ] ) string1 要转换的 ...