我想为 C 接口实现某种名称修饰。我将拥有类似的功能和类型
struct Foo;
struct Foo* Foo_create(struct Bar* bar);
void Foo_destroy(struct Foo* obj);
struct Foo_InnerClass;
...
现在,_ 在所有标准 c 类型定义中都广泛使用,因此如果使用这些类型定义,该方案将无法正常工作。GCC 和 MSVC 似乎接受使用 $ 的名称。那行得通吗?还有其他我可以使用的接受字符吗?
编辑:
我想这样做是因为
- 它避免了重复的名称
- 它强调标识符属于哪个类
- 它使自动生成C++接口成为可能
编辑2:
保留一个普通的字母会到处编译,但它也可能令人困惑:
struct Foo* FooIcreate(struct Bar* bar);
编辑 3:
该符号可能因目标平台而异,但在该平台上,它不得与 C++ 名称修饰冲突。
编辑4:
禁止以数字开头的标识符。那么呢:
struct Foo* Foo_1_create(struct Bar* bar);