2017-02-22 3 views
1

Следующая код-Как написать макрос, который принимает имя типа?

#define test_macro (some_typename) some_typename func (some_typename x) {return x;} 
test_macro (int) 

не компилировать с г ++ 4.4.7 дает следующее errors-

constructor, destructor, or type conversion before 'some_typename' 
unqualified-id before 'int' 
')' before 'int' 

Где я буду неправильно?

+5

Почему вы используете макросы? Возможно, шаблоны? –

+0

@EdHeal test_macro может использоваться приложением C – Curious

ответ

8

Макросы не имеют представления о типах имен или любых других языковых функциях, поскольку они являются частью препроцессора. Единственная проблема с кодом форматирования, а именно некоторые дополнительные пространства:

#define test_macro(some_typename) some_typename func (some_typename x) {return x;} 
test_macro(int) 

На стороне записки, когда вам нужно TypeName быть параметр, рассмотреть шаблоны - они хороши в этом :)

+0

спасибо, что решает! – Curious