3

書籍レコード用の次のプログラムがあります

#include <stdio.h>
#include <string.h>
#define SIZE 7
struct books{
        char name[100],author[100];
        int year,copies;
    };
struct books book1[SIZE],book2[SIZE],book3[SIZE],*list;
void union(struct books *,struct books *,struct books *,int);  

main()  
{  
 //code here  
}  

void union(struct books *list1,struct books *list2,struct books *list3,int n1,int n2)  
{  
 //code here  
}  

次のように、関数宣言と定義でエラーが発生します。

error: expected ‘{’ before ‘(’ token
error: two or more data types in declaration specifiers

ここで何が問題なのですか?

4

6 に答える 6

2

unionは C の予約済みキーワードです。別の関数名を選んでみてください。

于 2013-10-24T18:33:13.933 に答える
2

union関数名として使用しないでください。それはreserved keywordC の

C言語予約キーワードの確認

予約済みキーワードの意味はすでに定義されており、他の意味に再定義することはできません。関数や変数に名前を付けるときは、これらの名前以外に、変数や関数などに適切な長さの名前を選択できます。

編集

void union(struct books *,struct books *,struct books *,int);  //declaration

void union(struct books *list1,struct books *list2,struct books *list3,int n1,int n2)   //definition  
                                                                                ^^
{

} 

definition に追加のパラメーターがあり、 definition または definition のいずれかを変更します。

また main()、戻り値の型で定義しますint

于 2013-10-24T18:33:35.417 に答える
1

unionは C の予約済みキーワードです。関数に別の名前を付けようとしてもよいでしょう。

また、あなたの戻り値の型mainint

于 2013-10-24T18:33:53.877 に答える
1

まず、「union」は予約済みのキーワードなので、関数名を変更してください。次に、main はプログラムの実行が開始される関数でもあるため、main の前に void または int を記述します。void main を宣言すると、値は返されませんが、int main を選択すると、プログラムの最後に整数値が返されます。

于 2014-02-12T10:57:00.033 に答える