这就像问题的标题
我正在为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的定义,因此出错。所以我把$^改成了$<问题就解决了。我对误导感到抱歉。。