typedef const struct __CFString * a1;
在上面的 typedef 声明中,a1 被定义为指向常量结构 __CFString 的指针。
这里的“__”是什么意思?
然后我创建一个新定义为 a2,如下所述。
typedef const struct CFString * a2;
那么,a1 与 a2 有何不同?
typedef const struct __CFString * a1;
在上面的 typedef 声明中,a1 被定义为指向常量结构 __CFString 的指针。
这里的“__”是什么意思?
然后我创建一个新定义为 a2,如下所述。
typedef const struct CFString * a2;
那么,a1 与 a2 有何不同?
首先,中的下划线__CFString
是名称的一部分,所以struct __CFString
和struct CFString
是不同的类型,就像struct XXCFString
和struct CFString
是不同的类型。
其次,任何以双下划线开头的名称都保留用于实现。换句话说,您不能使用以双下划线开头的名称而不冒名称冲突的风险。
这是另一个包含更多详细信息的 SO 答案:在 C++ 标识符中使用下划线的规则是什么?