[英]differs in level of indirection from int 'int ()'
我正在建立一個鏈表,並試圖建立一個添加節點的功能,以測試我通過的名稱和大小。
我想用腦袋稱呼它,但遇到一些奇怪的錯誤,我無法調試。
struct Test{
char name[_MAX_NAME];
int size;
struct Test *next;
};
typedef struct Test *node;
node AddNode(node head, char name, int size);
在我的主
node head = NULL; // is this problem?
head = AddNode(head,"Test Name",110);
錯誤C2040'AddNode':'node(node,char,int)'的間接級別與'int()'不同
考慮消息“'node(node,char,int)'在間接級別上與'int()'不同”。 在此消息中, int ()
是從未聲明函數時提供的默認聲明中獲取非C標准編譯器的類型。 也就是說,在聲明之前使用AddNode
時,它會自動聲明為int AddNode()
。
然后,在代碼的后面,當出現AddNode
聲明時,您的聲明與默認聲明形成對比,編譯器將打印此消息。
要解決此問題,請在使用AddNode
之前聲明它。 這樣的聲明必須出現在使用它的每個源文件中。 (實際上,聲明必須出現在C 轉換單元中 ,這意味着編譯源文件時將包含所有文件。轉換單元包括#include
包含的頭文件。您必須在以下位置具有AddNode
聲明:源文件本身或包含的文件中。)
另外,您將AddNode
聲明為node AddNode(node head, char name, int size);
但為第二個參數傳遞"Test Name"
。 作為函數參數, "Test Name"
充當char *
,而不是char
,因此您可能想將聲明更改為node AddNode(node head, char *name, int size);
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.