c语言 - 包含.cpp文件中"unknown type name 'size_t'"错误,但在包含的文件名更改为 .h 文件时删除。为什么?



这就像问题的标题
我正在为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尝试编译头文件(我将其作为先决条件,以便在更改头文件时重新编译(,但由于头文件本身没有size_t的定义,因此出错。所以我把$^改成了$<问题就解决了。我对误导感到抱歉。。

最新更新