Имя переменной из аргумента макроса

Я бы хотел сделать что-то вроде этого:

class SomeClass { };

GENERATE_FUNTION(SomeClass)

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

26
задан a3f 31 March 2015 в 01:07
поделиться

2 ответа

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

Если препроцессор поддерживает макросы с переменным числом, вы также можете включить тип возвращаемого значения и список параметров:

#define GENERATE_FUNCTION(RET,NAM,...) RET func_##NAM(__VA_ARGS__)

.. так, например:

GENERATE_FUNCTION(int,SomeClass,int val)

.. расширится до:

int func_SomeClass(int val)
5
ответ дан 28 November 2019 в 07:22
поделиться
#define GENERATE_FUNCTION(class_name) func_##class_name##
4
ответ дан 28 November 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: