Подтвердить что ты не робот

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

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

class SomeClass { };

GENERATE_FUNTION(SomeClass)

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

4b9b3361

Ответ 2

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

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

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

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

GENERATE_FUNCTION(int,SomeClass,int val)

.. будет расширяться до:

int func_SomeClass(int val)

Ответ 3

#define GENERATE_FUNCTION(class_name) func_##class_name##