2017-01-04 2 views
-1

Я пытаюсь написать макросы, чтобы определить некоторый класс, но в этом случае я не могу написать деструктор, потому что тильда является специальным символом для препроцессора.Как экранировать тильду в макросах препроцессора?

Существует пример:

#define CLASS(cName) \ 
class cName \ 
{ \ 
public: \ 
    cName() \ 
    { \ 
    \ 
    } \ 
    \ 
    ~cName() \ 
    { \ 
    \ 
    } \ 
};\ 

Как экранировать тильды?

+1

Какой компилятор вы используете? Какое сообщение об ошибке/предупреждении вы видите? – owacoder

+0

@Carcigenicate я надеюсь найти этот путь) –

+0

@owacoder C2059, MSVC++ 10 –

ответ

0

Это правильный способ объявить:

#define MAKECLASS(name) \ 
class name \ 
{ \ 
public: \ 
    name() {} \ 
    ~name() {} \ 
}; 

MAKECLASS(a) 

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

+0

спасибо, я нашел проблему, одна строка имеет символ табуляции после косой черты) Спасибо вам большое! –

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