如何在结构中保存一个常量值?如果我将 const 放在 LEBEL0 上,我将无法在 LEBEL1 上分配给它。但是,如果我不在 LEBEL0 处放置 const,那么我将在 LEBEL1 处收到限定符丢失警告。有没有办法做到这一点?我想出了一个肮脏的解决方案(如下),但我认为可能会有更好的解决方案......
typedef struct _MyStruct
{
const SomePointerType pktData; <--LABEL0
}MyStruct;
const SomePointerType SomeFunctionICannotModify()
{
…
}
void SomeFunction()
{
MyStruct data;
….
data.pktData = SomeFunctionICannotModify(); <--LABEL1
....
SomeSubFunction(&data);
}
void SomeSubFunction(MyStruct* data)
{
this function does not modify any fields in "data".
}
PS:上面的代码是一个“模型”,不是真实的代码,来说明我的问题。它没有我实际程序中的所有代码。请不要问诸如“你为什么要那样做”、“你不必那样做”、“那个代码不能编译”之类的问题。
我的肮脏解决方案
typedef struct _ConstHolder
{
const SomePointerType pktData;
}ConstHolder;
typedef struct _MyStruct
{
ConstHolder holder;
}MyStruct;
void SomeFunction()
{
MyStruct data;
….
ConstHolder holder = {SomeFunctionICannotModify()};
data.holder = holder;
....
SomeSubFunction(&data);
}