在 #define 中使用"\"的含义

the meaning of '' using in #define

本文关键字:#define      更新时间:2023-10-16

我想知道代码"\"的含义。我以前看过一些解释,但我忘了,谁能告诉我?

#include "stdafx.h"
#include <fstream>
using namespace std;
ofstream out("order.out");
#define CLASS(ID) class ID {
public: 
   ID(int) { out<<#ID " constructorn;} 
   ~ID() { out<< #ID "destructorn";}
};

每行末尾的反斜杠()表示下一行是当前行的延续。

所以

#define class(ID) class ID

与相同

 #define class(ID) class 
 ID

''#define中的含义。

允许您编写多行宏。CCD_ 5被附加在每一行的末尾。

您可以在上获得更多信息http://www.cs.cornell.edu/andru/mlm/syntax.html

它使编译器将当前行和之后的行视为同一行。

对于定义来说,这很重要,因为预处理器只考虑当前行上的内容。

例如:

#define CLASS(ID) class ID {
public: 
   ID(int) { out<<#ID " constructorn;} 
   ~ID() { out<< #ID "destructorn";}
};
CLASS(foo)

将扩展到

class foo {

#define CLASS(ID) class ID {
public: 
   ID(int) { out<<#ID " constructorn;} 
   ~ID() { out<< #ID "destructorn";}
};
CLASS(foo)

将扩展到

class foo {
public: 
   foo(int) { out<<"foo" " constructorn;} 
   ~foo() { out<<"foo" "destructorn";}
};

它是一个反斜杠。它主要用于一行代码太大,为了可读性和文档性需要拆分的情况。它将一行连接到下一行,也可以链接多行。

它允许您通过将以反斜杠结尾的行与下一行串联来定义多行#。