【问题标题】:C macro undeclaredC 宏未声明
【发布时间】:2019-09-26 08:10:05
【问题描述】:

我正在尝试使用标头为预处理器声明一些宏并在代码文件中使用它们。

这是我的标题:error.h

#ifndef PROJET_MODULE_H 
#define PROJET_MODULE_H

#define TESTMACRO 5

#endif

和代码文件:error.c

#include <error.h>
#include <stdio.h>

int main(){
   printf("%d\n", TESTMACRO);
   return 0;
}

我得到这个错误:

‘TESTMACRO’未声明(在此函数中首次使用)

我已经尝试编译了:

gcc 错误.c -o 错误

gcc error.h error.c -o 错误

两者都给了我错误。感谢任何帮助,谢谢

【问题讨论】:

  • 试试#include "error.h"
  • 解决了,谢谢
  • 很可能error.h 是在其他地方找到的系统标头的名称。不是你的标题
  • 补充说明:你的命令gcc error.h error.c -o error是错误的。您不必在命令行上指定头文件。 (除非您想做一些不符合约定的非常不寻常的事情。)如果您想查看包含的内容,您可以运行gcc -E -C error.c -o error.i 并检查生成的文件error.i#include "file.h" 用于项目的包含文件,#include &lt;file.h&gt; 用于系统包含,通常来自 /usr/include 或某个编译器特定位置。

标签: c compilation header


【解决方案1】:

总结评论中所说的一切:
要包含非系统标头,您必须使用 " 而不是 &lt;&gt;
resquest 已解决,将 #include &lt;error.h&gt; 更改为 #include "error.h"

【讨论】:

    【解决方案2】:

    要包含系统头文件,您可以使用&lt;&gt;""

    要包含自定义头文件,您应该使用"error.h""absolute path of error.h"

    如果您仍想使用&lt;&gt; 包含自定义头文件,则应使用以下命令进行编译。

    gcc error.c -I &lt;path of folder in which error.h resides&gt; -o error

    例如,如果 error.h 在 /user/testuser/include/error.h 中,那么

    gcc error.c -I /user/testuser/include/ -o error

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      相关资源
      最近更新 更多