2012-03-27 4 views
2

Я хочу знать значение кода «\». Раньше я видел некоторые объяснения, но я забыл, кто может мне сказать?Значение «», используемое в #define

#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";}\ 
}; 

ответ

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";} 
}; 
6

Обратная косая черта (\) в конце каждой строки означает, что следующая строка является продолжением текущей строки.

Так

#define class(ID) class ID 

идентичен

#define class(ID) class \ 
ID 
+0

O, я знаю, спасибо – user1279988

+2

Одна дополнительная вещь, чтобы быть в курсе, что эта линия продолжение не только для '# define' - это довольно много на любой линии. В большинстве случаев это не имеет особого значения в C/C++, кроме макроопределений (если вам не нравится разбивать строки в середине идентификатора). Но одно место это может произойти (и вызвать неприятный сюрприз), если у вас есть один в конце комментария строки '//' style singleline - в этом случае следующая физическая строка считается частью комментария. –

1

Сво обратной косой черты. Его чаще всего используют, когда строка кода слишком большая и ее необходимо разделить на куски для удобства чтения и документации. он объединяет одну строку в другую и может быть привязан к нескольким линиям.

+0

Большое спасибо – user1279988

1

Это позволяет использовать многострочный #define путем объединения линий, заканчивающихся обратным слэшем, со следующей строкой.

+0

Спасибо, что я это помню. – user1279988

2

Смысл '\' в #define.

\ позволяет писать многострочные макросы. \ прилагается в конце каждой строки.

Вы можете иметь больше на http://www.cs.cornell.edu/andru/mlm/syntax.html Информацию по

Смежные вопросы