C ++定义了一个接受一个函数并将其传递给其他函数的宏,这可能吗?

时间:2019-02-06 22:47:13

标签: c++ function macros

我有这样的功能:

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 (*)())

是否不可能将一个函数传递给宏,然后再将该函数传递给宏中的其他函数?

1 个答案:

答案 0 :(得分:1)

您的inputFormatted函数签名必须为:

string inputFormatted(void errFunc()) {