我想传递一个指针在C结构,但我不能:C结构的指针作为参数
float calcular_media(struct aluno *aluno) {
输出警告:
C:\WINDOWS\system32\cmd.exe /c gcc main.c aluno.c
aluno.c:7:29: warning: 'struct aluno' declared inside parameter list
我在做什么错? 谢谢。
我想传递一个指针在C结构,但我不能:C结构的指针作为参数
float calcular_media(struct aluno *aluno) {
输出警告:
C:\WINDOWS\system32\cmd.exe /c gcc main.c aluno.c
aluno.c:7:29: warning: 'struct aluno' declared inside parameter list
我在做什么错? 谢谢。
你是否在此函数之前声明struct aluno?
无论是一个完整的定义:
struct aluno {
...
};
或至少是一个向前声明:
struct aluno;
你需要让编译器知道有一个结构称为aluno你开始传递之前,到功能。
struct aluno {
int x;
int y;
};
float calcular_media(struct aluno * aluno) {
// ...
}
你有一个名为“aluno.h”文件(与struct aluno
的定义),并且你将其纳入“aluno.c”?
/* aluno.c */
#include "aluno.h"
float calcular_media(struct aluno *aluno) { /* ... */ }
我相信你最终会做这样的事情:
#include <stdio.h>
struct aluno
{
int nota1;
int nota2;
}
float calcular_media(struct aluno* individuo)
{
printf("nota 1:%d\n", individuo->nota1);
printf("nota 2:%d\n", individuo->nota2);
}
int main()
{
struct aluno primeiro_aluno;
primeiro_aluno.nota1 = 9;
primeiro_aluno.nota2 = 5;
calcular_media(&primeiro_aluno);
return 0;
}
不要忘记投票答复我的答案或接受它作为正式答案,如果它解决了您的问题。 – karlphillip 2010-09-22 19:12:07
在该文件中包含该行
float calcular_media(struct aluno *aluno) {
下列操作之一,必须前行是有
struct aluno;
或struct aluno { char c; int i; double d; };
或#include "aluno.h"
您需要发表更多的代码。 – tidwall 2010-09-21 22:36:23
编译器错误说明了一切:结构在函数定义之前未定义。 – 2010-09-21 23:02:25