我想傳遞一個指針在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