-1
Может ли кто-нибудь сказать мне, что означает это предупреждение?
Что означает это предупреждение gcc?
s_sort.c: In function 'main':
s_sort.c:15:15: warning: incompatible implicit declaration of built-in function
'malloc' [enabled by default]
A[i].name = malloc(MAXCHAR*sizeof(char));
Я пытаюсь выполнить следующий код. Платформа GCC 4.8.1 для Windows x64 (TDM-GCC). Проблема заключается в том, насколько я вижу в доступе к членам структуры.
#include <stdio.h>
#define MAX 3
#define MAXCHAR 100
int main(){
struct STUDENT
{
int studentID;
char* name;
char grade;
} A[MAX];
int i;
printf("\n");
for (i=0;i<MAX;i++)
{
A[i].name = malloc(MAXCHAR*sizeof(char));
}
for (i=0;i<MAX;i++)
{
scanf("%d",&(A[i].studentID));
scanf("%s",A[i].name);
scanf("%c",&(A[i].grade));
}
printf("\n");
for (i=0;i<MAX;i++)
{
printf("%d ",A[i].studentID);
printf("%s ",A[i].name);
printf("%c ",A[i].grade);
printf("\n");
}
for (i=0;i<MAX;i++)
{
free(A[i].name);
}
}
Вы забыли включить ' .' –
+1 для того, чтобы не выдавать возвращаемое значение' malloc() 'и, следовательно, ловить ошибку! – pmg
Для вашей информации эта конкретная проблема была тем, что создало целое [не отбрасывать результат обсуждения malloc] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) , Вы скомпилировали это как C90 или C99? Если вы это сделаете, вы можете получить разные предупреждения/ошибки. Старые компиляторы crappier C90 могут даже не давать предупреждения, но оставляют ошибку скрытой в вашей программе. – Lundin