"unknown type name 'size_t'" 来自包含的 .cpp 文件的错误,但当包含的文件名更改为 .h 文件时已删除。为什么?

"unknown type name 'size_t'" error from included .cpp file, but removed when included file name changed to .h file. Why?

就像题目一样
我正在为 arm64 机器更新我的程序。包含的文件已从“args.cpp”更改为“args.h”。在包含文件中使用了 size_t 类型(以前也是)。现在编译器 (aarch64-none-linux-gnu- ) 抱怨“未知类型名称 'size_t'”错误。如果我将包含的文件名更改为 args.cpp,错误就消失了。为什么事情会发生?以及如何使用 args.h 作为包含的文件名?

#include <stddef.h> 对于 size_t (C)

#include <cstddef> 对于 std::size_t (C++)

cstddef也在全局命名空间中定义了size_t,尽管C++标准不保证

问题不在代码中。在我的 Makefile 中,我错误地将 $^ 而不是 $<,如下所示。

%: %.c include/*.h
    $(CROSS_COMPILE)gcc -g -fmax-errors=5 -DQEMU -I$(AXPUDIR) -I$(INCDIR) $^ -o $@

所以 make 尝试编译头文件(我把它作为先决条件,以便在我更改头文件时重新编译它)但出错了,因为头文件本身没有定义 fo size_t.所以我将 $^ 更改为 $<,问题就消失了。误导我深表歉意..