2016-06-28 2 views
1

Если я пишу что-то такое, как это:Определяется внутри класса, приватного для этого класса?

class myclass 
{ 
#define ADD(x,y) {return x+y} 

public: 

} 

является определить частный мой класс?

Обратите внимание, что я определяю его в * .hpp, и я хочу убедиться, что, если я включу этот hpp в другой исходный код, другой исходный код не имеет доступа к этому определению.

Есть ли лучшее решение, чем использование #define в C++, который может сделать то же самое?

Что относительно использования? это личное для моего класса или нет?

class myclass 
{ 
using std; 

public: 

} 
+1

Возможный дубликат: http://stackoverflow.com/questions/6379489/scope-of-define-preprocessor-in-c – DeathTails

+0

@DeathTails Спасибо, что один, если для C, а это для C++, являются ли они одна и та же? – mans

+1

В этом случае да. Ответ и причины этого - точно такие же. –

ответ

6

Это не так, и никогда не может быть.

Все команды препроцессора (#...) обрабатываются до того, как исходный код когда-либо читается и анализируется, поэтому не имеет значения, где вы их помещаете; только последовательность (если они строятся друг на друге) и относительная позиция их использования (до/после) имеет значение.

Вы можете представить команды препроцессора как нечто вроде «найти/заменить здесь».

0

Вы можете использовать #undef, чтобы ограничить область #define. Возможно, вы даже можете использовать его, чтобы ограничить область определения, которую вы сами не создали.

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