我有这样的功能:
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 (*)())
是否不可能将一个函数传递给宏,然后再将该函数传递给宏中的其他函数?
答案 0 :(得分:1)
您的inputFormatted
函数签名必须为:
string inputFormatted(void errFunc()) {