如何修复 GCC error: implicit declaration of function ...

问题:

尝试编译你的 C/C++ 程序时,你看到类似这样的错误消息

gcc_implicit_declaration_error.txt
../src/main.c:48:9: error: implicit declaration of function 'StartBenchmark' [-Werror=implicit-function-declaration]
         StartBenchmark();

解决方案

implicit declaration of function 意味着你正在尝试使用尚未声明的函数。在上面的示例中,StartBenchmark隐式声明的函数。

这是你调用函数的方式:

call_start_benchmark.cpp
StartBenchmark();

这是你声明函数的方式:

declare_start_benchmark.h
void StartBenchmark();

以下项目符号列出了最常见的原因及如何修复它们:

  1. 缺少 #include 检查包含函数声明的头文件是否在你调用函数的每个文件中(特别是错误消息中列出的文件)被 #include,在函数的第一次调用之前(通常在文件顶部)。头文件可以通过其他头文件包含,
  2. 函数名拼写错误:通常声明的函数名与正在调用的函数名不完全匹配。例如,声明了 startBenchmark() 而调用了 StartBenchmark()。我建议通过从声明复制粘贴函数名到你调用它的地方来修复此问题。
  3. 错误的包含保护:IDE 自动生成的包含保护通常看起来像这样:
include_guard_example.h
#ifndef _EXAMPLE_FILE_NAME_H
#define _EXAMPLE_FILE_NAME_H
// ...
#endif

注意包含保护定义 _EXAMPLE_FILE_NAME_H 不特定于我们使用的头文件名(例如 Benchmark.h)。只是所有头文件名中的第一个会 4. 更改 #include 语句的顺序: 虽然这可能看起来像是个糟糕的技巧,但它通常工作得很好。只需将包含声明的头文件的 #include 语句移到顶部。 例如,移动之前:

include_order_before.cpp
#include "Benchmark.h"
#include "other_header.h"

移动之后:

include_order_fixed.cpp
#include "Benchmark.h"
#include "other_header.h"

Check out similar posts by category: C/C++, GCC Errors