Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中使用#定义字符串+;_C++_Curl - Fatal编程技术网

C++ 在C+中使用#定义字符串+;

C++ 在C+中使用#定义字符串+;,c++,curl,C++,Curl,在尝试使用cURL上传图像时,由于下面的代码,我感到困惑 #define UPLOAD_FILE_AS "testImage.jpg" static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS; 我想了解的是 定义的上传文件\u的确切类型为:字符数组/字符串/或其他什么 在第二行中执行的精确操作:在第二行之后,buf_1变为“RNFR testImage.jpg”。但是第二行在“RNFR”和上传文件作为之间

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

#define UPLOAD_FILE_AS  "testImage.jpg"
static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
我想了解的是

  • 定义的
    上传文件\u的确切类型为
    :字符数组/字符串/或其他什么
  • 在第二行中执行的精确操作:在第二行之后,buf_1变为
    “RNFR testImage.jpg”
    。但是第二行在
    “RNFR”
    上传文件作为
    之间只有一个空格。我从来没有听说过空格可以代替“+”运算符或合并函数。这怎么可能
  • 宏的定义是预处理器风格的,它只是字符序列,恰好在
    中。没有类型。宏在编译器(及其类型的概念)开始实际编译之前展开

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


  • define
    不创建变量,因此没有类型的概念。在编译源文件之前,会运行预处理器。它会用它的值(
    “testImage.jpg”
    )替换宏的所有实例,即
    上载文件为
    。
    换句话说,在预处理器阶段之后,您的代码如下所示:

    static const char buf_1[]=“RNFR”“testImage.jpg”;
    
    和C++字符串自动展开,这两个字符串都变成了:<代码>“RNFR作证”。您可以在这里找到更好的解释:,主要是:

    并排放置的字符串文本在转换阶段6(在预处理器之后)连接起来。也就是说,“Hello”,“world!”生成(单个)字符串“Hello,world!”。如果两个字符串具有相同的编码前缀(或两者都没有),则生成的字符串将具有相同的编码前缀(或没有前缀)

    定义的上载文件的确切类型为

    没有类型。它不是一个变量。这是一个宏。宏完全存在于类型系统之外

    预处理器用宏的定义替换宏的所有实例。有关示例,请参见下一段

    在第二行执行精确操作

    操作是宏替换。预处理文件后,第二行变为:

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