【发布时间】:2016-04-26 11:22:43
【问题描述】:
我有一个名为playerInformation 的结构,我想从我的C 程序中的一个函数返回,下面的函数是我编写的那个。
它找到了正确的结构,我可以使用printf 打印函数内的详细信息。但是,我似乎无法返回一个指针,以便我可以在主函数中打印信息。
使用此代码,我会收到以下警告:
MainTest.c: In function ‘main’:
MainTest.c:34: warning: assignment makes pointer from integer without a cast
MainTest.c(第 33 和 34 行)
struct playerInformation *test;
test = findPlayerInformation(head, 2);
结构函数.c
struct playerInformation *findPlayerInformation(struct playerInformation *head, int playerIndex) {
struct playerInformation *ptr;
for(ptr = head; ptr != NULL; ptr = ptr->next) {
if(ptr->playerIndex == playerIndex) {
return ptr;
}
}
return NULL;
}
【问题讨论】:
-
是
findPlayerInformation声明的(放在一个头文件中,包含在main定义之前的maintest.c 中)? -
使用前先放原型。
-
实际上它“只是”一个警告.. findPlayerInformation 位于您的主函数下方还是您之前定义了函数原型?
-
purplepsycho 是对的,来自 java 背景我完全省略了将新函数添加到我的头文件中,为愚蠢的问题道歉!
-
正确配置您的编译器。低于版本 5 的 GCC 默认设置为错误的编译器 (gnu90)。而是使用
gcc std=c11 -pedantic-errors,它会告诉你到底是什么问题(缺少函数原型)。
标签: c function pointers struct