*.几个预编译指令的用法

#        字符串化运算符,其主要效果是把参数的名字转换为字符串。

Example:

//1. *.h中定义

#defineSTRINGLIZE(ivalue)  #ivalue

// *.cpp中定义

CStringstrTmp = STRINGLIZE(2);

AfxMessageBox(strTmp);

// 结果是:弹出消息框中显示2,说明可以变成字符串

// 2.

#defineSTRINGLIZE(ivalue) printf(#ivalue " is: %d", ivalue)
             // 使用
            STRINGLIZE(2);

// 结果是:2 is: 2,将ivalue的值与后面的字符串合并成一个字符串了

// 注:以下这情况使用时的结果会有不同

int  a = 2;

STRINGLIZE(a);

// 1. 结果是:弹出消息框中显示a

// 2. 结果是:a is: 2

注意:预处理的意思就是在编译运行前按字面处理,

##       粘贴运算符,即它先进行宏替换,再进行连接。

Example:

#defineMACR1 printf("MACR1 is invoked.")

#defineMACR2 printf("MACR2 is invoked.")
            #define MAKE_MACR(n) MACR ## n

// 使用时

MAKE_MACR(2);// -->相当于调用了宏MACR2

// 结果是:MACR2 isinvoked.

// 2.

#defineSTRINGLIZE(ivalue) TRACE("ivalue is: %d", ivalue##ivalue)

STRINGLIZE(2);

// 2. 结果是:ivalueis: 22

// 3.

int a =2;

STRINGLIZE(a);

// 3. 结果是:errorC2065: 'aa' : undeclared identifier

#@       字符化运算符

Example:   #defineCHARIZEIT(x) #@x

// 使用

char c= CHARIZEIT(z);

// 结果是:c = 'z'

#include包含一个源代码文件

Example:#include /#include "my.h"/#include "t.c"

#define 定义宏

Example:#define MAX_NUM 10/#define max(x,y) (x) > (y) ? (x) : (y);

#define可以替代多行的代码,例如MFC中的宏定义:
            #define MACRO(arg1, arg2) do { \
              语句; \

}while(条件) 
           关键是要在每一个换行的时候加上一个"\"。

#undef  取消已定义的宏

#if     如果给定条件为真,则编译下面代码

#ifdef  如果宏已经定义,则编译下面代码

#ifndef 如果宏没有定义,则编译下面代码

#elif   如果前面的#if给定条件不为真,当前条件为真,则编译下面代码

#endif  结束一个#if/#ifdef/#ifndef...#else条件编译块

#error  停止编译并显示错误信息

#line   指令可以改变编译器用来指出警告和错误信息的文件号和行号。

#pragma 指令没有正式的定义。编译器可以自定义其用途。

几个预编译指令的用法相关推荐

  1. C#中的预编译指令介绍

    原文:C#中的预编译指令介绍 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量 ...

  2. 在Silverlight 和WPF中使用预编译指令 if..else..endif (译)

    下面的是中文翻译,有些扯淡的话就略过了,想看原文,请到这里 对于预编译指令,作者分成了几篇文章来讲解的.鉴于翻译后的文字较少,我把作者的几篇合为了一篇.下面进入正题. 一.总揽: 想要编写特定平台的代 ...

  3. UnityShader30:预编译指令multi_complie和shader_feature

    multi_complie 和 shader_feature 编译指令往往用于正式游戏项目的优化 一.关键字与Shader变体 multi_complie 的用法: #pragma multi_com ...

  4. c语言的预编译指令是什么,c语言预编译指令有哪些?

    c语言预编译指令有哪些? 预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理器指令有:文件包含.条件编译.布局控制和宏替换4种. 文件包含 #include是一种最为常 ...

  5. VS 之 预编译处理#pragma用法

    Windows预编译处理#pragma用法 每个编译器可能不一样 #pragma once 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次 #pragma message("字符 ...

  6. 预编译指令与相关宏小结

    //======================================================================== //TITLE: //    预编译指令与相关宏小 ...

  7. c语言中条件编译相关的预编译指令

     一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二. ...

  8. C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】

    由"源代码"到"可执行文件"的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译 ...

  9. C#基础13:预编译指令

    PS:注释和讲解全在代码中 1. 预编译指令 预编译指令也叫预处理指令,在程序正式编译之前执行 这些指令不会转化为可执行代码中的命令,但是会影响编译过程的各个方面 具体例子如代码: using Sys ...

最新文章

  1. 团队作业—第二阶段06
  2. 蓦然回首,灯火阑珊的CIO之路(连载八)
  3. 5G NR — O-RAN 的系统架构
  4. 松下电视机服务器未响应,松下电视遥控器失灵是什么原因?要怎么办?
  5. ODataModel.submitBatch by default Asynchronous
  6. div没有设置高度,背景颜色却无法显示
  7. Typesafe公司正式更名为Lightbend公司
  8. 配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件...
  9. sharepoint配置问题解决方案
  10. JAVA怎么实现网页退出系统_java后台实现js关闭本页面,父页面指定跳转或刷新操作...
  11. 如何破解linux用户帐号密码二
  12. python开发跟淘宝有联系没_Python爬取淘宝店铺和评论
  13. 为type=file的input标签制定样式——CSS基础
  14. 【Mac版】小i译读安装操作
  15. iphone刷android怎么刷机,不用刷机 让iPhone运行Android 6.0
  16. CROW-5 WEB APP引擎商业计划书(HTML5方向)-微信网页版微信公众平台登录-水仙谷...
  17. pytorch 中的 forward 的使用与解释
  18. HashMap的fast-fail和ConcurrentHashMap的fail-safe实例
  19. 微信共享停车场小程序开发设计方案
  20. ubuntu 安装 pip 及 pip 常用命令

热门文章

  1. RBAC模型:表设计分析
  2. SpringBoot异常处理-自定义HandlerExceptionResolver
  3. SpringCloud_Sell.sql
  4. jmu-python-重复元素判定_Python入门 —— 用pycharm写一个简单的小程序2
  5. puppy linux不识别鼠标,不止于OS X!还有适用于Mac的八款替代操作系统
  6. axios nodejs 上传图片_vue项目中使用axios上传图片等文件操作
  7. 使用支持向量机进行光学字符识别_从零推导支持向量机 (SVM)
  8. 使用软碟通安装 CentOS Stream 会遇到哪些问题
  9. 2018 美团、腾讯、头条、蔚来 社招面试随谈
  10. Java10来了,来看看它一同发布的全新JIT编译器