gpt4 book ai didi

c - C中的手动名称修改

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:54 25 4
gpt4 key购买 nike

我想为 C 接口(interface)实现某种名称重整。我将拥有像

这样的功能和类型
struct Foo;
struct Foo* Foo_create(struct Bar* bar);
void Foo_destroy(struct Foo* obj);
struct Foo_InnerClass;
...

现在,_ 在所有标准 c typedef 中广泛使用,因此如果使用这些 typedef,该方案将无法正常工作。 GCC 和 MSVC 似乎接受使用 $.那行得通吗?我可以使用任何其他 acceptet 字符吗?

编辑:

我想这样做是因为

  • 避免重名
  • 它强调标识符属于什么类别
  • 使自动生成C++接口(interface)成为可能

编辑 2:

保留一个普通的字母会到处编译,但也可能会造成混淆:

struct Foo* FooIcreate(struct Bar* bar);

编辑 3:

该符号可能因目标平台而异,但在该平台上,它不得与 C++ 名称重整冲突。

编辑 4:

禁止以数字开头标识符。那么:

struct Foo* Foo_1_create(struct Bar* bar);

最佳答案

不确定您为什么要这样做,或者确切的目标是什么,但是大多数 C 库或多或少地使用了一些助记前缀。

一个普通的 $ 会很糟糕,因为它 a) 非常不常见,C 标识符通常以字母或下划线开头并且只包含字母、数字和下划线,并且 b) 没有说明任何关于符号属于什么。

像 glib 这样的库,所有函数都有一个 g_ 前缀,它的类型有一个 g 前缀,宏有一个 G_ 前缀。 GTK+类似,它使用gtk_等。

关于c - C中的手动名称修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13029718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com