当我想在符号(::).It总是有一个尾随空格后获得宏中函数的地址时,就会产生这个问题,它会报告一个错误。
我在Mojave i386中使用了G++。
例如,我有一个类:
struct A{
void b();
};
还有一个宏:
#define ACC(name) &A::name
我用它来获取A::b的指针
void(*accab)() = ACC(b);
我会得到这样的错误:
error: cannot initialize a variable of type 'void (*)()' with an rvalue of type 'void (A::
下面是这段代码:
void a() { }
// function parameter first defined as function, then as pointer to function
void g(void f() = a, void (*d)() = a) {
}
int main(){
void (*z)() = a; // works ok
//void z() = a; error: illegal initializer (only variables can be initialized)
return 0;
}
在函数参数列表中,可以将函数参数
我对这段代码有问题,因为编译器不允许我运行代码,因为
cannot convert 'void (Menu::*)(int)' to 'void (Menu::*)(int*)' in assignment.
我知道这个程序可以用正常的函数来执行。我读过一些关于typedef的东西,但我已经有一段时间没有编程了,我的英语也不是母语。代码有一些西班牙语单词,但不影响代码,我可以翻译,如果你想,但我认为这很容易理解。如果有人能帮我,我会很感激的。
#include "Menu.h"
#include<iostream>
using s
我有一个关于void*和void**的问题,我知道这是一个古老的问题,以前在stackoverflow中已经(有点)被问过了。所以问题是这样的:
当我在ubuntu 10.10下用gcc 4.4.3编译这段代码时,我得到了以下警告:
zz.c: In function ‘main’:
zz.c:21: warning: passing argument 1 of ‘bar’ from incompatible pointer type
zz.c:9: note: expected ‘void **’ but argument is of type ‘float **’
为什么可以将变量x作为f