c++ - 如何在 C/C++ 中默认初始化函数指针?

标签 c++ gcc compiler-construction function-pointers

我正在将一个函数指针传递给另一个函数,我希望它被默认初始化, 这就是我正在尝试的,但这会导致语法错误

void bar(int i) {}
void foo(void (*default_bar=bar)(int)) {
//
}

错误:

Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/f_13.d" -MT"src/BinarySearchTree_13.d" -o "src/BinarySearchTree_13.o" "../src/f_13.cpp"
In file included from ../src/f_13.cpp:10:
../src/tree.h:51: error: expected `)' before '=' token
../src/tree.h:51: error: 'foo' declared as function returning a function
../src/tree.h:51: error: expected ';' before ')' token
../src/tree.h:60: error: expected `;' before 'void'
make: *** [src/f_13.o] Error 1

只是一点,这工作正常:

void foo(void (*default_bar)(int)) {

最佳答案

这样:

void foo(void (*default_bar)(int) = bar)

关于c++ - 如何在 C/C++ 中默认初始化函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14914036/

相关文章:

c++ - ofstream 数据输出问题

c++ - 为什么我的 SFINAE 表达式不再适用于 GCC 8.2?

c++ - 单个继承的派生类的大小

gcc - 将 gcc vector::iterator 传递给函数有什么问题?

c++ - 编译器如何确定何时对 RVO 是安全的?

java - 为什么java编译器不重写这段代码?

c++ - 构建同一 C/C++ 应用程序的变体的最佳方法是什么

c++ - 缺少 vtable 通常意味着第一个非内联虚拟成员函数没有定义

c++ - 用非基元填充 CapnProto 列表

boost - 如何使 boost.build 使用特定的编译器安装?