簡體   English   中英

間接級別與int'int()'不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM