あなたが持っていたと想像してください:
myfile.h
typedef struct _myStruct myStruct;
struct _myStruct
{
uint32_t uData1;
uint32_t uData2;
uint32_t uData3;
/* More data members */
}
void myStructSetData(myStruct * const pMyStruct, const uint32_t uData1, const uint32_t uData2, const uint32_t uData3)
{
if (!pMyStruct)
return
pMyStruct->uData1 = uData1;
pMyStruct->uData2 = uData2;
pMyStruct->uData3 = uData3;
}
main.c
int main(void)
{
...
/* myStructSetData(pMyStruct, 1, 2, 3); */
...
myStructBuild(pMyStruct);
...
}
myStructSetData() を提供しますが、ユーザーは必ずしもこの関数を使用して uData1、2、および 3 を設定するとは限りません。myStructBuild() では、uData1、2、および 3 が設定されているかどうかを知りたいのですが、 pMyStruct の作成時にそれらを初期化するか、bIsData1Set などの bool 値を使用しました (これは避けたいと思います)。
では、uData1、uData2、および uData3 を -1 に初期化することは理にかなっていますか?
したがって、 myStructBuild() では、次のようなチェックがあります。
if (pMyStruct->uData1 != -1)
{
/* Include uData1 when building */
}