У меня есть большое количество имен переменных, каждая из которых имеют следующий шаблон,экстракт подмножество из макро аргумента
- ABC_00_fld1
- ABC_01_fld1
То, что я хотел бы достичь, это передать их аргументы макросу, в C++ и вычеркнуть префиксы. Что-то вроде этого:
#define MAKE_FLD(param)\
some manipulation on param
Ожидаемый результат:
MAKE_FLD(ABC_00_fld1) => fld1
Я знаю, что мы можем достичь этого с помощью простых функций, однако выбор макроса стесненных на меня, и у меня есть много других движущихся частей, которые будут введите указанную выше функцию для создания большего количества макросов. Я не знаю, как это сделать в C++. Я посмотрел в строку, но я не уверен, соответствует ли это законопроекту. Пожалуйста, опубликуйте свои предложения.
EDIT: Чтение всех предложений заставляет меня предоставить больше фона. Чтобы дать некоторую перспективу относительно использования этого макроса. Рассмотрим, что приложение создает структуры с использованием макросов. Поэтому каждая структура будет иметь кучу данных. Вышеупомянутый «ABC_00_fld1» становится типом данных класса, который определен в некоторой другой части приложения. Таким образом, в структуре, сгенерированной с помощью макроса, будет выглядеть примерно так.
struct macro_struct_fld1 {
ABC_00_fld1 fld1;
};
struct macro_struct_fld2 {
ABC_01_fld1 fld1;
};
Этот вышеприведенный фрагмент является мотивацией того, чего я пытаюсь достичь. Существуют и другие способы достижения вышеуказанного, где в моей макрогенерированной структуре вместо передачи списка типов данных я могу передать список перечислений, содержащих тип данных и имя переменной, и извлечь их, но тогда я придется вручную создавать имена, которые мне не понравятся.
Строковые операции - это не то, что макросы очень хороши. Есть несколько вопросов переполнения стека об этом - вы Google? – xaxxon
Может ли ваш макрос расширяться до вызовов функций? –
Что вы намерены делать с этими сокращенными именами переменных? – user4581301