2010-09-21 3 views
1

Я пытаюсь передать указатель на структуру в C, но я не могу:C Struct указатель в качестве параметра

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 

Что я делаю неправильно? Спасибо.

+1

Вам нужно будет выслать больше кода. – tidwall

+0

Ошибка компилятора говорит обо всем: структура не определена до определения функции. –

ответ

4

Вы объявляете struct aluno до этой функции?

либо с полным определением:

struct aluno { 
    ... 
}; 

Или, по крайней мере, опережающее объявление:

struct aluno; 
1

Вы должны позволить компилятору знать, что есть структура называется aluno перед началом передачи его к функциям.

struct aluno { 
    int x; 
    int y; 
}; 

float calcular_media(struct aluno * aluno) { 
     // ... 
} 
1

У вас есть файл с именем «aluno.h» (с определением struct aluno) и вы в том числе его «aluno.c»?

/* aluno.c */ 
#include "aluno.h" 

float calcular_media(struct aluno *aluno) { /* ... */ } 
2

Я считаю, что вы будете в конечном итоге делает что-то вроде этого:

#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; 
} 
+0

Не забудьте проголосовать за мой ответ или принять его в качестве официального ответа, если он решит вашу проблему. – karlphillip

3

В файле, содержащий строку

float calcular_media(struct aluno *aluno) { 

одно из следующих действий должны быть там до линии

  • struct declara: например. struct aluno; или
  • struct определение: например. struct aluno { char c; int i; double d; }; или
  • содержит некоторого заголовочного файла, который имеет одно из указанных выше: например. #include "aluno.h"

Смежные вопросы