C/C++教程

[C++杂谈]C++遇到的坑

本文主要是介绍[C++杂谈]C++遇到的坑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、宏在字符串中的使用

在使用C++调用SQLITE的demon中,将宏替换写入了一个字符串中,但运行的时候与预期不一致。
先看代码:

#define _VAR_ARG_20 (20)#define _VAR_ARG_40 (40)#define _VAR_ARG_SPEC   (20-30)char *str = "Target Pin[_VAR_ARG_20]:Value[_VAR_ARG_40]:Spec[_VAR_ARG_SPEC]";

编译无问题,运行的时候,str中的各个宏并没有被替换。第一反应是,宏是在预编译的时候进行替换的,不应该存在问题才对。后来仔细想想,char *实际上是一个存放在静态存储区里面的字符串,其实质是一个右值,不允许修改,且其创建是在预编译之前完成的,字符串中的宏被视为普通的字符串不会被替换。

如果要实现字符串的替换,可以使用 # 号连接一个字符串与宏。
也可以先使用占位符替换宏,然后以格式化字符的方法使用宏替换占位符达到目的。

这篇关于[C++杂谈]C++遇到的坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!