c - 显然 NULL 在包含的文件中是未知的
问题描述
我面临一个奇怪的问题:
我有一个主要的开头:
#include <stdlib.h> /* this defines NULL */
#include <stdio.h> /* ditto */
#include <fcntl.h>
#include <ctype.h> /* ditto */
#include <unistd.h> /* ditto */
#include <linux/input.h>
#include <string.h> /* ditto */
#include <sys/ioctl.h>
#include "parse.h"
...但在包含的文件中:
#define NULL ((void*)0) /* I need this! */
struct parse_key {
char *name;
unsigned int value;
} keynames[] = {
{"KEY_RESERVED", 0},
{"KEY_ESC", 1},
{"KEY_1", 2},
{"KEY_2", 3},
...
{"KEY_MAX", 0x2ff},
{NULL, 0}
};
我需要重新定义NULL
,否则我得到错误:“错误:'NULL' undeclared here (not in a function)”。
注:在主文件NULL
中定义;如果我尝试#define
它,我会得到:“警告:“NULL”重新定义”
修复是微不足道的,但我不明白发生了什么。有人可以发光吗?
解决方案
不要重新定义它。
只需包含<stdlib.h>
在您的头文件中
也不要在头文件中定义任何函数和数据。只是类型声明、外部变量、函数声明和静态内联函数(如果它们在许多 C 文件中使用)。
推荐阅读
- html - 我的导航栏上的下拉 div 的小问题 :(
- python - 如何避免在我的模块上使用 dir 时出现内置插件
- ios - 将 ChatSDK 与 Zendesk iOS Swift 一起使用
- bnf - RFC 822 的 BNF 规则中的 & 符号是什么意思?
- c# - 尝试创建 confluence.kafka 库
- python - 如何在 tkinter 文本小部件中设置一些文本颜色
- flutter - 将 Flutter 文本字段数据传递到父窗口小部件
- java - 使用 java 客户端连接到安全的 Hbase
- python - 检查一个函数是否是 Numpy 函数
- ios - 以编程方式将页脚视图添加到视图控制器