c++ - 引用无效

标签 c++ linux gcc function-pointers

我有一种偷偷摸摸的感觉,这可能是编译器造成的问题。

void SetRenderFunction(void (&newRenderFunction(void)));

这导致 GCC 声明我“无法声明对‘void’的引用”

现在,我在 Windows 上的 Visual Studio 下使用了相同的函数原型(prototype)(或多或少)。在 Windows 上,我有一个不同的函数名称,而不是传递一个指向采用 void 的函数的指针,而是传递一个指向我需要的其他对象的指针。

如果我使用 * 而不是 & 它可以防止这个问题,但是当我尝试传入函数指针时,我会遇到类型转换问题:它试图将其从 void (*)() 转换为 void* (*)()

谢谢。

最佳答案

嗯...已经被其他人间接回答了。多亏了 Alf 和 A​​byx,我才注意到我做错了什么,但因为他们都或多或少在同一时间发帖,而且他们都没有实际说出哪里出了问题,只是说了做我正在尝试的事情的正确方法是什么,我将对旧的自己回答。

我的函数调用是:

void SetRenderFunction(void (&newRenderFunction(void)));

错的地方在这里 - - - - - - - - - - - - - - - - - - - ^ 和 - ^

我应该在 &newRenderFunction 和这个函数指针的参数周围放一组括号。像这样:

void SetRenderFunction(void (&newRenderFunction)(void));

修复在这里 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ^ - - - - - ^

关于c++ - 引用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4980845/

相关文章:

c++ - 解析对临时函数对象的调用中的歧义

c++ - 使用 C++ Boost 进行矩阵除法

c++ - Opengl:视口(viewport)、裁剪、矩阵模式困惑

linux - grep 某些文件中的模式并在每个文件中打印总和

c - strcpy 的段错误(ELF 可执行文件)

gcc - 基于 x86-64 汇编的索引寻址和段错误

c++ - 如果允许堆栈分配的引用作为参数,如何进行通信?

linux - 如何在 `screen` 中设置日志文件的名称?

linux - Perl 脚本将换行符添加到文本文件末尾

gcc - "multiple types in one declaration"但没有;丢失的