操作构造字符串化宏#define STRINGIZE(x) #x

c++test工程单元测试中报错 “STRINGIZE” 未定义错误

解决方案:在头文件定义宏STRINGIZE

#符号把一个符号直接转换为字符串,例如:
#define STRINGIZE(x) #x
const char *str = STRINGIZE( test_string ); str的内容就是"test_string",也就是说#会把其后的符号
直接加上双引号。
##符号会连接两个符号,从而产生新的符号(词法层次),例如:
#define SIGN( x ) INT_##x

int SIGN( 1 ); 宏被展开后将成为:int INT_1;

原文地址:https://www.cnblogs.com/zhangfengfly/p/9085031.html

时间: 2024-08-01 22:14:23

操作构造字符串化宏#define STRINGIZE(x) #x的相关文章

两级宏&&字符串化宏

如果你想字符串化宏参数扩展的结果,你必须使用两个级别的宏. 1 #define xstr(s) str(s) 2 #define str(s) #s 3 #define foo 4 4 str (foo) 5 ==> "foo" 6 xstr (foo) 7 ==> xstr (4) 8 ==> str (4) 9 ==> "4" 当s被用在str中,s被字符串化,所以首先它不是宏扩展. 但s是xstr的一个普通参数,所以在xstr完全宏扩展

C宏定义中的连接符"##"和字符串化操作符"# "及变参宏"..."

C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念). 1.宏定义中字符串化操作符#: #的功能是将其后面的宏参数进行字符串化操作,意思就是对它所应用的宏变量通过替换后在其左右各加上一个双引号. 例如: #define WARN_IF(EXPR)do { if (EXPR) fprintf(stderr, "Warning: " #EXPR "\n");} while(0) 上面代码中的反斜线\主要用来转译换行

C语言预处理功能 关于字符串化和符号粘贴

在C语言开发中,宏定义是一个非常有用的工具,它可以使我们的代码更容易理解,更容易维护.如查一个常量在多处被使用,且今后可能会根据不同需要而 修改的话,将其define一下那是再好不过了.除此之外,宏定义还有其他的功能,了解它,将更好地辅助我们开发C程序.先看个例子: #define Conn(x,y) x##y #define ToString(x) #x #define ToChar(x) #@x 这几个宏定义中分别用到了"##"."#","#@&quo

protobuf在java中的字符串化

最近由于项目需要,大致研究了一下protobuf的java使用.说实话,习惯了C++的protobuf,java用起来真别扭. 由于需要将protobuf序列化后,存入redis,而且redis没法直接存储非字符串的数据,所以我只能想办法将protobuf序列化成字符串. protobuf的java实现里,并没有直接序列化成String类型变量的方法,但是提供了toByteArray()方法,可以序列化成byte[]. 于是乎很容易想到可以这么做: byte[] raw_bytes = prot

PHP常用操作的字符串函数

PHP常用字符串的操作函数 字符串转换类函数 addcslashes函数:以C语言风格使用反斜线转义字符串中的字符 addslashes函数:使用反斜线引用字符串 chop函数:清除字符串中的连续空格 get_html_translation_table函数:返回htmlspecialchars()函数和htmlentities()函数的转换表 chunk_split函数:将字符串分割成小块 hebrev函数:转换希伯来逻辑字符为可见字符 hebrevc函数:转换希伯来语文本为可见文本,包括换行

字符串操作--查询字符串出现的次数

1.获取一个字符串在另一个字符串中出现的次数 思路: 1,定义个计数器. 2,获取kk第一次出现的位置. 3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置. 每获取一次就计数一次. 4,当获取不到时,计数完成 程序示例: package tan; public class StringTest2 { public static void sop(String str) { System.out.println(str); } // 缺陷:每次截取字符串占用了很多内存空间 public

android上让我放弃使用wstring来操作中英文字符串 转

android上让我放弃使用wstring来操作中英文字符串 2013-08-07 16:37:24|  分类: cocos2d|举报|字号 订阅 项目需要,需要对中英文字符串进行遍历修改等,本来wstring和string网上面有一大堆的介绍,其中有一个“跨平台”的方法,但是无奈是用到setlocale这个方法,这个方法在android(NDKR8D)上面无论如何都返回null,也可以看看其源代码(测试版本NDK R8D) google和度娘上找了我一整天,后来不得不请教himi,himi指了

宏define

Q:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个 A: #define MIN(A,B)  ((A) <= (B) ?(A):(B)) 这个测试为这些目的而设: 1).标识#define在宏中应用的基本知识.直到嵌入(inline)操作符变为标准C 的一部分.是方便产生嵌入代码的唯一方法.对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法. 2).三重条件操作符的知识.这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码.了解这个用

spring-data-jpa——如果使用了one-to-many,many-to-one的注解,在Jackson进行json字符串化时出现错误的解决方案

参考资料: http://blog.csdn.net/remote_roamer/article/details/51330843 http://blog.csdn.net/xiaodaiye/article/details/51118870 在spring-data-jpa中,使用了one-to-many和many-to-one注解,在进行json字符串化时出现错误. 经查阅资料找到以下解决方法: 通过在主表的pojo中增加@JsonManagedReference来注解关联字段: @OneT