【发布时间】:2013-07-26 17:54:02
【问题描述】:
我正在尝试初始化一个结构数组。结构中包含函数指针,并且定义如下:
typedef struct{
char str[512];
char *fptr;
} infosection;
然后我尝试创建一个数组:
infosection section[] = {
("Software", *SoftwarePtr),
("Hardware", *HardwarePtr),
}
我使用一个简单的教程定义了函数指针。 函数软件返回一个int
int (*SoftwarePtr)()=NULL;
SoftwarePtr = &Software;
我的问题是关于我在编译时收到的警告。
初始化从没有强制转换的指针生成整数
警告引用节数组中的行。
所以我有两个疑问:
- 我是不是误用 */&/neither 作为指针?我已经尝试过每种方法的组合,但似乎仍然收到相同的警告。我知道每种方法的含义,只是不确定它们在这个特定情况下如何应用.
-
我可以像在这里一样在数组中声明
infosection struct的实例吗?我见过很多例子,人们在for loop中声明他们的array of struct, 然而,我的最终产品需要包含在该数组中的一长串结构。我想让我的代码portable以便人们可以在一个简单的列表中add structs(与要指向的函数相对应的字符串)时尚如所见。 这是声明数组实例的唯一方法吗infosection section[]; section[0].str="software"; section[0].fptr=SoftwarePtr;
澄清一下,我对structs、array of structs 和function pointers 进行了大量研究。只是这三者的组合似乎造成了麻烦。
【问题讨论】:
-
我认为函数指针是 void *()。
-
@Jim 我在这里读到:newty.de/fpt/fpt.html#defi 需要用它们指向的函数的返回类型声明函数指针...
-
char *fptr;这不是函数指针,char*和函数指针之间的转换没有明确定义 -
无论如何,一个更好的问题可能是:哪个垃圾编译器允许所有这些错误漏掉?请不要告诉我你正在使用 Turbo C...
-
那是我的朋友 GCC
标签: c arrays struct function-pointers