gpt4 book ai didi

头文件中结构定义的编译器错误

转载 作者:行者123 更新时间:2023-12-02 06:27:09 25 4
gpt4 key购买 nike

当尝试使用我在头文件中定义的 struct 时,我一直遇到编译器问题。

我有两个文件:main.c:

     #include <stdio.h>
#include <stdlib.h>
#include "node.h"

int main(){
struct NODE node;
node.data = 5;
printf("%d\n", node.data);
return 0;
}

以及node.h:

#ifndef NODE
#define NODE
struct NODE{
int data;
struct NODE *next;
};

#endif

我正在编写一个小程序来练习 C 中的一些模块化编程,但我遇到了以下编译器错误:

node.h:5:21: error: expected ‘{’ before ‘*’ token
struct NODE *next;
^

当我直接在文件 main.c< 中定义 struct 时,我得到了要编译的 main.c 并执行我希望它执行的操作,但出于某种原因,如果我将定义放在头文件中,然后尝试将其包含在 main.c 中,它将不起作用。这非常令人沮丧,我敢肯定这是一件小事,但是有人可以告诉我为什么这不起作用吗?根据我一直在阅读的内容,我应该能够做到这一点,不是吗?

非常感谢!

最佳答案

预处理器正在将 NODE 展开为空,因为您已经用宏定义了它。将头文件更改为如下所示:

#ifndef NODE_H
#define NODE_H
struct NODE{
int data;
struct NODE *next;
};

#endif

关于头文件中结构定义的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55894053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com