c - 头文件中结构定义的编译器错误
问题描述
尝试使用struct
头文件中定义的 I 时,我不断遇到编译器问题。
我有两个文件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
推荐阅读
- node.js - 在 Docker 映像中创建 Let's Encrypt 证书和 Certbot
- angular - 如何在嵌套组件中只执行一次订阅 ngOnInit
- linux - Docker登录x509:未知权威签署的证书
- python - 如何过滤不包含在另一个列表中的元组(x,y)列表?
- elasticsearch - Minikube - 如果使用现有索引,则无法从弹性搜索中获得任何结果
- c - 如何在我的 gcc 编译器中链接第 3 方库 bzip2?
- javascript - 这两行是什么意思?
- javascript - 在 React Native / Expo 上同时渲染多个视频的更优化方式?
- powerbi - 将 Measure 用作没有 Unpivot Data 的切片器
- java - 有没有办法通过定位器(或替代方法)在 Selenium 中捕获 IFRAME 上下文?