Я хочу, чтобы определить, какКак определить функцию марко с именем переменной
Марко#define AUTO_FUC(x) void x(){}
определить функцию с именем х.
Я думаю, что имя функции будет заменено на x, переданное arg x.
AUTO_FUC("test")//it should equal to void test(){} I think
Но это не так.
Итак, как это сделать на C++?
Я использую MinGW и использую marco дважды с разными аргументами.
AUTO_FUC("A")
AUTO_FUC("B")
Он не давал мне функцию A() и B(). Компилятор сказал мне void someClass::x() cannot be overloaded
.so Я знаю, что марко не работает.
Спасибо, я понимаю, что пустота «A»() не является правильной функцией. Я забыл, что я передаю марко в качестве аргумента, а marco - это строка.
И еще вопрос. Я действительно хочу создать функцию с именем в соответствии с переменным значением. И значение переменной может быть записано как string a = a;
? Он должен иметь "
Я прав? Итак, если я использую строку, такую как "A"
, как я могу использовать A
для создания функции void A()
, когда передаем значение marco?
#include <string>
#include <iostream>
#define AUTO_FUC(x) \
void x() \
{\
std::cout<<"hi";\
}\
int main()
{
std::string A = "A";
AUTO_FUC(A); //it's equal to AUTO_FUC("A") it wrong
A(); //So it's undefined;
}
Как вы знаете, что это не сработало? – Angew
[Опубликовать минимальный, полный, действительный пример] (http://stackoverflow.com/help/mcve). – Rakib
AUTO_FUC - интересное имя для этого макроса, что вы хотите сделать? –