符号(@)和美元符号($)在C或C ++中是否有任何特殊含义

最近我的一位朋友在接受采访时遇到了这个问题。 面试官问他,像$, @, |, ^, ~等特殊字符是否在c或c ++中有任何用法。

我知道|, ^ and ~分别用作按位OR,XOR和补码。

但我不知道@ and $是否有任何特殊含义。 如果确实如此,请举例说明可以应用的地方吗?

@在C中通常无效; 它不用于任何东西。 它被Objective-C用于各种目的,但那是另一个鱼的水壶。

$也是无效的,但许多实现允许它出现在标识符中,就像字母一样。 (例如,在这些实现中,如果您愿意,可以命名变量或函数$$$ 。)即使在那里,它也没有任何特殊含义。

要完成接受的答案, @可用于指定嵌入式系统上变量的绝对地址。

 unsigned char buf[128]@0x2000; 

请注意,这是一个非标准的编译器扩展。

在这里查看一个很好的解释

完成其他答案。 5.2.1.3中的C99标准:

基本源和基本执行字符集都应具有以下成员:

拉丁字母的26个大写字母

ABCDEFGHIJKLM NOPQRSTUVWXYZ

拉丁字母的26个小写字母

abcdefghijklm nopqrstuvwxyz

10位十进制数字

0 1 2 3 4 5 6 7 8 9

以下29个图形字符

! " # % & ' ( ) * + , - . / : ! " # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~

所有其他角色甚至可能都不存在。 (不应该使用)

但共同扩展中也有这一点:附件J,J.5.2:

除了下划线_,字母和数字之外的不属于基本源字符集的字符(例如美元符号$或国家字符集中的字符)可能出现在标识符(6.4.2)中。

这基本上是duskwuff已经写的。