c - 在C结构中添加字段时如何提醒开发人员访问和查看一些相关函数?

标签 c compilation macros c-preprocessor conditional-compilation

我有一个复杂的 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/

相关文章:

编译困境(代码块和ubuntu)

c - 这种宏观论证计数策略是否合法?

c++ - 使用宏创建 QObject 派生类

c - C语言移动文件的方法

c - volatile 的语义

c++ - 指定 netbeans 用于编译 C++ 程序的完整编译命令?

c# - VS2012 在 x64 操作系统中编译为 x86,值为 "Any CPU"

python - 避免在 cython 中对链表进行嵌套结构重新定义

c - 指向将指向另一个函数的指针作为参数的函数的指针

c - 有没有办法编写一个知道另一个宏被使用了多少次的宏?