在C++中对字符串使用#define

在尝试使用 cURL 上传图像时,由于下面的代码,我感到很困惑。

#define UPLOAD_FILE_AS  "testImage.jpg"
static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;

我想明白的是,

  1. 定义的确切类型UPLOAD_FILE_AS:字符/字符串/或其他数组?
  2. 在第二行执行的确切操作:在第二行之后, buf_1 变为"RNFR testImage.jpg". 但是第二行在"RNFR"和之间只有一个空格UPLOAD_FILE_AS。我从未听说过空格可以代替“+”运算符或合并函数。这怎么可能?

回答

  1. 宏的定义是预处理器风格的,它只是字符序列,恰好在"". 没有类型。宏在编译器(及其类型的概念)开始实际编译之前展开。

  2. C++ 将始终连接所有字符序列内的“”。在构建过程中,“A”“B”将始终被处理为“AB”。没有运算符,也没有隐式运算符。这通常用于具有非常长的字符串文字,跨越几行代码。


以上是在C++中对字符串使用#define的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>