【发布时间】:2019-08-13 19:00:13
【问题描述】:
我正在编写一个 C 程序,其中我使用头文件来声明一些函数并定义几个常量。当我在我的代码中使用这些常量时,我得到了错误Symbol 'FOO' could not be resolved。我对声明的函数没有任何问题。
我正在使用 Eclipse Neon。我已经验证了包含头文件的目录的路径已添加到包含路径中。而且我还重启了 Eclipse。
header.h
#ifndef __header_h_
#define __header_h_
#define FOO 0x00
#define BAR 0x01
void do_stuff(int x);
#endif
main.c
#include <stdio.h>
#include "header.h"
int main() {
do_stuff(FOO);
return 0;
}
错误:无法解析符号“FOO”
我在这里错过了什么?
【问题讨论】:
-
您可能需要做的是在包含路径中添加
-I选项(假设为 gcc),在某个难以找到的编译器选项设置中。由于 Eclipse 实际上只是一个神秘的链接器错误生成器,因此我建议您改用 IDE,这样您就可以专注于调试代码而不是调试工具链。 -
显然你的代码看起来不错。只有一件事:using
__at the start of any identifier is reserved for any use。也许试试#ifndef H__HEADER_? -
@Lundin 您不会将 Eclipse 归类为 IDE 吗?还是您的意思是另一个 IDE?
-
@KamiKaze 由于 Eclipse 不能用于任何形式的生产性开发,不,我不会将其归类为开发环境。
-
@Lundin 正如我所说,我验证了该目录位于包含路径中。而且我还检查了它是否在(确实很难找到)编译器选项设置中。此外,编译器似乎只在解析定义的参数时有问题。当我更改函数声明中的参数数量时,我收到一个错误,即 C 文件中相应函数的参数太少。所以我假设头文件被正确包含(或多或少)。