'#'在#define中的含义

时间:2012-03-27 08:47:23

标签: c++ char

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

#include "stdafx.h"
#include <fstream>
using namespace std;

ofstream out("order.out");

#define CLASS(ID) class ID {\
public: \
   ID(int) { out<<#ID " constructor\n;} \
   ~ID() { out<< #ID "destructor\n";}\
};

5 个答案:

答案 0 :(得分:6)

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

所以

#define class(ID) class ID

相同
 #define class(ID) class \
 ID

答案 1 :(得分:2)

'\'#define的含义。

\允许您编写多行宏。 \附加在每行的末尾。

您可以在http://www.cs.cornell.edu/andru/mlm/syntax.html

上获得更多信息

答案 2 :(得分:1)

它使编译器看到当前行和\之后的行作为同一行。

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

例如:

#define CLASS(ID) class ID {
public: 
   ID(int) { out<<#ID " constructor\n;} 
   ~ID() { out<< #ID "destructor\n";}
};

CLASS(foo)

将扩展为

class foo {

,而

#define CLASS(ID) class ID {\
public: \
   ID(int) { out<<#ID " constructor\n;} \
   ~ID() { out<< #ID "destructor\n";}\
};

CLASS(foo)

将扩展为

class foo {
public: 
   foo(int) { out<<"foo" " constructor\n;} 
   ~foo() { out<<"foo" "destructor\n";}
};

答案 3 :(得分:1)

它的反斜杠。它主要用于一行代码太大而需要拆分成可读性和文档的部分。它将一行连接到下一行,也可以链接多行。

答案 4 :(得分:1)

它允许您通过连接以反斜杠结尾的行与下一行来拥有多行#define。