什么是@&引用;在C/C中的平均值++';什么是宏?

什么是@&引用;在C/C中的平均值++';什么是宏?,c,macros,cross-compiling,openwrt,C,Macros,Cross Compiling,Openwrt,我交叉编译了一个固件,一个奇怪的文件名为libbfd.h,我编译失败了,我见过它。在libbfd.h第83行: 79 #define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@ 80 #define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@ 81 #if @BFD_HOST_64_BIT_DEFINED@ 82 #define BFD_HOST_64_BIT @BFD_HOST_64_BIT@

我交叉编译了一个固件,一个奇怪的文件名为
libbfd.h
,我编译失败了,我见过它。在
libbfd.h
第83行:

79 #define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
80 #define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
81 #if @BFD_HOST_64_BIT_DEFINED@
82 #define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
83 #define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
84 typedef BFD_HOST_64_BIT bfd_int64_t;
85 typedef BFD_HOST_U_64_BIT bfd_uint64_t;
86 #endif

这里的
BFD\U HOST\U 64\U BIT
被定义为
@BFD\U HOST\U 64\U BIT@
,我在测试文件中测试的“@”是什么意思,无法编译。有人能帮我吗?谢谢

在目标系统上进行配置时,
@变量@
将替换为值

你是否做了典型的:

./configure
make

建造它?这些字符应该具有常量。

字符不是C标准执行字符集的一部分,主要是因为它不是原始ASCII标准的一部分


除非它是C实现扩展的一部分,
@
s需要在C编译器看到它们之前被删除。

我猜,它是一个将被构建脚本替换的变量?如果我冒险猜测,这是一个
config
substitution文件,在为您的平台配置并构建OpenWRT toolkit的过程中,用实际值填充该文件。它可能不打算直接包括在内,而是用来生成一个您确实使用的版本(或者至少是OpenWRT使用的版本)。@sehe是的,可能有一个脚本,但我现在找不到它,因为我是自动编译的。我只是
makemenuconfig
并在配置之后键入
make
。不,我是自动构建的。我只是键入了
make menuconfig
,然后在cofig之后键入
make
。我不确定您的确切意思,但您需要弄清楚如何在构建中运行预处理步骤。这可能只是不这样做时会遇到的许多错误中的第一个。我使用OpenWrt的autobuild系统,按照这里的步骤,完整的命令是
/script/feeds update-a
/script/feeds install-a
make menuconfig
make