当前位置:  开发笔记 > 编程语言 > 正文

错误:未声明(首次使用此功能)

如何解决《错误:未声明(首次使用此功能)》经验,为你挑选了1个好方法。

我用C语言编码,无法找出错误是什么.它一直告诉我第一:在这一行

temp = (Node*) malloc(sizeof(struct Node));

Node是不宣而第一次使用是在这个function.but我想我以前已经声明它.

第二:在同一行

"预期表达''''令牌"

它指向了 (Node*)

第三:

"投入结束时的预期声明或声明."

而它指向}主要关闭.

对于第一个我搜索并发现它是因为C89而且我必须在我的函数顶部声明所有变量.我做了但是错误仍然存​​在.

这是我的代码:

#include 
#include 
#include  
#include 

 struct Node{
    int data;
    struct Node* next;
};

struct Node* head;

void Add(int x){
    struct Node* temp;
    temp = (Node*) malloc(sizeof(struct Node));
    temp -> data = x;
    temp -> next = head;
    head = temp;
}

void print(){
    struct Node* temp;
    temp = head;
    printf("List is:");
    while(temp != NULL){
        printf(" %s",temp -> data);
        temp = temp -> next;
    }
int main(int argc, char **argv)
{

    head = NULL;
    Add(3);
    print();
    return 0;
}

我正在尝试使用链表.



1> Sourav Ghosh..:

在你的代码中

 temp = (Node*) malloc(sizeof(struct Node));

应该

 temp = malloc(sizeof(struct Node));

或者,为了更好,

 temp = malloc(sizeof *temp);

消除问题,因为你不需要转换malloc()和家庭的返回值C..

但是,错误是因为您错过了struct那里的关键字.

要解决第三个错误,

"投入结束时的预期声明或声明."

好吧,你错过了}这个print()功能的结局.

FWIW,你应该malloc()在使用之前检查返回的指针和函数族的有效性.

话说回来,

对于第一个我搜索并发现它是因为C89而我必须在函数顶部声明所有变量

不是真的.是的,在C89,你需要申报的顶部所有的变量,但这并没有让你跳过struct关键字,反正.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有