在哪些目标平台上,GCC不支持标识符中的美元符号?

在哪些目标平台上,GCC不支持标识符中的美元符号?,c,gcc,C,Gcc,标识符中的美元符号并不严格符合C标准,而是一种广泛实现的扩展。报告说: 在GNUC中,您通常可以在标识符名称中使用美元符号。这是因为许多传统的C实现都允许这样的标识符。但是,一些目标机器上不支持美元符号标识,通常是因为目标汇编程序不允许美元符号标识 在我自己的测试中,我发现GCC在x86、x86-64、PPC64、z/Arch、32位ARMv7和64位ARM上支持Linux;32位和64位x86 Windows(使用MinGW编译);以及32位和64位macOS(我指的是OSX,而不是经典mac

标识符中的美元符号并不严格符合C标准,而是一种广泛实现的扩展。报告说:

在GNUC中,您通常可以在标识符名称中使用美元符号。这是因为许多传统的C实现都允许这样的标识符。但是,一些目标机器上不支持美元符号标识,通常是因为目标汇编程序不允许美元符号标识


在我自己的测试中,我发现GCC在x86、x86-64、PPC64、z/Arch、32位ARMv7和64位ARM上支持Linux;32位和64位x86 Windows(使用MinGW编译);以及32位和64位macOS(我指的是OSX,而不是经典macOS)。另外,我测试了clang,发现它在上述所有平台上也支持它们。实际上,我还没有遇到过任何平台上的美元符号标识符不起作用。哪些目标平台不支持美元符号识别?

通常会通过。从我发现的情况来看,例如,在Z80上,$用作十六进制数,在VAX上,$用作直接字符。等等@KamilCuk如果VAX上的标识符不支持美元符号,我会感到惊讶,因为VMS API中使用了大量美元符号标识符。因此,您提出的方法可能会产生不正确的结果。大多数汇编语言使用$for十六进制表示法。我不确定为什么这会阻止非标准的C标识符。这应该是(非标准)编译器的一部分,而不是端口。值得注意的是,
clang-std=c11-pedantic errors
block dollar signs,与gcc不同。这可能不是gcc的意图,因为在严格模式下编译时,它通常禁用非标准扩展。从我发现的情况来看,例如,在Z80上,$用作十六进制数,在VAX上,$用作直接字符。等等@KamilCuk如果VAX上的标识符不支持美元符号,我会感到惊讶,因为VMS API中使用了大量美元符号标识符。因此,您提出的方法可能会产生不正确的结果。大多数汇编语言使用$for十六进制表示法。我不确定为什么这会阻止非标准的C标识符。这应该是(非标准)编译器的一部分,而不是端口。值得注意的是,
clang-std=c11-pedantic errors
block dollar signs,与gcc不同。这可能不是gcc的意图,因为在严格模式下编译时,它通常禁用非标准扩展。