![]() |
1
1
看到了吗 this answer |
![]() |
2
3
使用C99,可以使用指定的初始值设定项:
(C99中允许尾随逗号;从技术上讲,它不在C90中。)
请注意,我故意对其重新排序—编译器会对其进行排序。另外,虽然我将“#define”值重写为“enum”值,但它可以与其中任何一个一起使用。 注意,Windows上的MSVC不支持这种表示法。这意味着我不能在必须在Linux和Windows之间移植的代码中使用它——这让我非常恼火。 |
![]() |
3
1
您可以为每个函数指针定义具有命名元素的结构,而不是数组:
|
![]() |
4
1
我们在这里使用这种技术。DSL基本上是一个带注释的C文件,看起来像这样:
这将产生一个
和一个
|
![]() |
5
0
X宏可能会有所帮助。例如,创建一个新的文件export\u table\u x.h,其中包含:
然后在导出表.h中,使用:
对原始功能的一个更改是ID\u PRINT\u函数现在是ID\u PRINT\u函数,等等。 必须添加一个额外的文件是很烦人的,但是您可以通过使用ifdef并将所有内容放在原始头文件中来避免这种情况,尽管这不太清楚。 |
![]() |
6
0
很少有C程序员利用
现在,您只需将每个新函数添加到此标题顶部的一个位置,如果希望保留作为库的向后兼容性,最好添加到函数映射的末尾。。。否则你可以按字母顺序列出。 |
![]() |
Joseph Hales · C#通用对象函数指针,相同地址? 7 年前 |
![]() |
Trytio · 同时处理非成员函数指针和成员函数指针 7 年前 |
![]() |
Ashutosh Tiwari · 无法理解c中的函数指针++ 7 年前 |
![]() |
cxandru · 有没有比传递参数更好的方法来确定方法的行为? 7 年前 |
![]() |
Aryan · 将引用(右值)移动到函数 7 年前 |
![]() |
moha · 将地址存储到函数指针中 7 年前 |