美文网首页工作生活
2019-07-03 c++的宏

2019-07-03 c++的宏

作者: 归去来ming | 来源:发表于2019-07-03 10:47 被阅读0次

看hotspot源码时,涉及到c++的宏,简单了解了一下:

C/C++语言中,预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换,预处理过程还会删除程序中的注释和多余的空白符号。预处理指令是以#开头的代码行,#必须是该行除了空白字符外的第一个字符。#后是指令关键字,在#和指令关键字之间允许存在若干空白字符。

#define是C/C++语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率

define中的三个特殊符号:#,##,#@

#define Conn(x,y)  x##y

#define ToChar(x)  #@x

#define ToString(x)  #x

(1) x##y表示什么?表示x连接y,举例说:

intn = Conn(123,456);     /* 结果就是n=123456;*/

char*str = Conn("asdf","adf");    /*结果就是 str = "asdfadf";*/

(2)再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:

char a = ToChar(1);    /* 结果就是a='1'; */

做个越界试验char a = ToChar(123);结果就错了;

但是如果你的参数超过四个字符,编译器就给给你报错了!

error C2015: too many characters in constant   :P

(3)最后看看#x,估计你也明白了,他是给x加双引号

char* str = ToString(123132);  /*就成了str="123132";  */

相关文章

  • 2019-07-03 c++的宏

    看hotspot源码时,涉及到c++的宏,简单了解了一下: C/C++语言中,预处理过程读入源代码,检查包含预处理...

  • 深入理解C++11 2.5 static_assert

    在C++中,标准在或者 头文件中未程序员提供了assert宏,例如: C++中,可以通过定义宏N...

  • [C++面试]宏相关问题

    1. 宏常量与宏函数 C++中用#define <宏名> <字符串>命令定义宏,在代码中将字符串替换宏名出现的位置...

  • C++中的内联函数

    1、常量与宏回顾 C++中的const常量可以替代宏常数定义,如: const int A = 3; <===>...

  • c++技巧

    使用c/c++宏进行编程 c/c++中宏的是在预处理的过程中进行展开,可以用来进行函数的声明和定义. 在阅读lib...

  • C++ 命名空间namespace

    本文转载自:C++ 命名空间namespace 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、...

  • c++基础(宏)

    有关 c++ 中宏的定义以及使用是今天的重点内容。 C++ 的宏定义将一个标识符定义为一个字符串,源程序中的该标识...

  • 六、C++ 内联函数分析

    1、常量与宏 C++中的const常量可以替代宏常数定义: 我们还可以利用宏来定义宏代码片段: 但是宏代码块不是函...

  • 虚幻引擎4-UE4 C++ UFUNCTION 宏 参数解析

    虚幻引擎c++中定义了许多宏,如UCLASS(),UPROPERTY(),UFUNCTION(),USTRUCT(...

  • C++宏的使用

    "##"与"#" 看一个栗子?: 上述示例中,ELEMENT(w,h)宏中“a##w##h”和"b##w##h"表...

网友评论

    本文标题:2019-07-03 c++的宏

    本文链接:https://www.haomeiwen.com/subject/euzfhctx.html