在C++中对字符串使用#define
在尝试使用 cURL 上传图像时,由于下面的代码,我感到很困惑。
#define UPLOAD_FILE_AS "testImage.jpg"
static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
我想明白的是,
- 定义的确切类型
UPLOAD_FILE_AS:字符/字符串/或其他数组? - 在第二行执行的确切操作:在第二行之后, buf_1 变为
"RNFR testImage.jpg". 但是第二行在"RNFR"和之间只有一个空格UPLOAD_FILE_AS。我从未听说过空格可以代替“+”运算符或合并函数。这怎么可能?
回答
-
宏的定义是预处理器风格的,它只是字符序列,恰好在
"". 没有类型。宏在编译器(及其类型的概念)开始实际编译之前展开。 -
C++ 将始终连接所有字符序列内的“”。在构建过程中,“A”“B”将始终被处理为“AB”。没有运算符,也没有隐式运算符。这通常用于具有非常长的字符串文字,跨越几行代码。