我有一个复杂的 C 结构 DATABSECONTEXT。 开发人员不断在此结构中添加不同的字段。我们审核然后接受。但有时会缺乏同步。 有一个复杂的例程 function1(),我们需要访问不同的字段并对其进行处理。因此,如果结构体中新添加的字段如果在 function1() 中没有处理,它将保留为 NULL。这是不一致的状态,稍后会导致崩溃。
我想要实现以下目标: 每当在此 DATABSECONTEXT 结构中添加某个字段时,都应该有某种机制向开发人员强制发出警报/消息,以重新访问相关函数 function1()。
我想维护一个头文件,其中包含我们在 function1() 中触及的每个字段的宏。对于 function1() 中使用的字段 dbCurrency 来说,我可以这样做
headerfile1.h
#define dbCurrency_funciton1
field definition macro inside the structure can be modified as:
headerfile2.h
#define funname restruc
#define PASTER(x,y) x ## _ ## y
#define NAME(fun) PASTER(fun, funname)
#define MY_ELEMENT(dtype, mname) dtype mname;\
#ifndef (NAME(mname)) \
#error "please visit funciton1() and add macro @NAME(mname) in headerfile.h"
#endif
struct DATABSECONTEXT
{
MY_ELEMENT(char, newlyAddedElement);
};
但是在 MACROS 中不允许使用这样的预处理器指令。
浏览了以下链接(以及更多链接),但找不到任何对我有用的内容。 Link1 , Link2
关于如何以优雅的方式实现这一目标有什么建议吗?
最佳答案
如果您可以在运行时检查它,则可以根据预期大小断言结构的大小。如果有人添加新字段,大小将会改变,因此您可以引发错误,通知 function1 和 size 必须更新。
<小时/>编辑:此解决方案不能保证覆盖下面的人描述的某些情况
关于c - 在C结构中添加字段时如何提醒开发人员访问和查看一些相关函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47455228/