我面临一个奇怪的问题:
我的主要开始是:
#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(不在函数中)”。注意:
NULL
在主文件中定义;如果我尝试#define
它得到:“警告:” NULL“重新定义”修复很简单,但是我不知道发生了什么。有人可以照亮吗?
最佳答案
不要重新定义它。
只需在头文件中包含<stdlib.h>
也不要在头文件中定义任何功能和数据。如果在许多C文件中使用了类型声明,外部变量,函数声明和静态内联函数,则只需声明它们即可。
关于c - 显然在包含的文件中未知NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53886332/