У меня есть такая функция:
string inputFormatted(void *errFunc()) {
string input;
cin >> input;
if (input == "") (*errFunc)();
return input;
}
, которая читает строку и показывает ошибку, если строка неверна
Мой errFunc реализован так:
void errBadKey() {
cout << "Enter a correct key, try HELP command for more information" << endl;
}
Я реализовал макрос следующим образом:
#define GET_PARAM(input, errorFunc) do { \
input = inputFormatted(errorFunc); \
} while(0);
, и я использую его так:
int main() {
string test;
GET_PARAM(test, errBadKey);
}
, и мне интересно, почему он говорит undefined reference to inputFormatted[abi:cxx11](void (*)())
Разве невозможно передать функцию в макрос, а затем передать эту функцию в другую функцию в макросе?