C語言常見問題
C語言中函數原型(聲明)和自定義資料類型的聲明順序。
代碼A
#include <stdio.h>
struct student *del(struct student *head, int num);
typedef struct student
{
int num;
float score;
struct student *next;
} student;
int main(int argc, char *argv[]){
return 0;
}
運作結果
編譯通過,沒有錯誤、警告
代碼B
#include <stdio.h>
student *insert(student *head, student *stu_2);
typedef struct student
{
int num;
float score;
struct student *next;
} student;
int main(int argc, char *argv[]){
return 0;
}
運作結果
bao:day0921 bao$ gcc -o test2 test2.c
test2.c:5:1: error: unknown type name ‘student’
student *insert(student *head, student *stu_2);
^
test2.c:5:17: error: unknown type name ‘student’
student *insert(student *head, student *stu_2);
^
test2.c:5:32: error: unknown type name ‘student’
student *insert(student *head, student *stu_2);
^
3 errors generated.
代碼C
#include <stdio.h>
typedef struct student
{
int num;
float score;
struct student *next;
} student;
student *insert(student *head, student *stu_2);
struct student *del(struct student *head, int num);
int main(int argc, char *argv[]){
return 0;
}
運作結果:編譯通過
是以養成良好的代碼習慣,先“寫”自定義結構體等資料類型,再去使用。