구조체에 상수 값을 저장하는 방법은 무엇입니까? LEBEL0에 const를 넣으면 LEBEL1에 const를 할당 할 수 없습니다. 하지만 const를 LEBEL0에 놓지 않으면 LEBEL1에서 한정자를 잃어 버리게됩니다. 이 일을 할 수있는 방법이 있습니까? ...C에서 구조체에 const 값을 저장하는 방법 (C++이 아님)?
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를 I (아래) 더러운 솔루션을 함께했다하지만 난 더 좋은 일이있을 수 있다고 생각 : 위의 코드는 내 문제를 설명하는 "모델"이 아닌 실제 코드이다. 그것은 내 실제 프로그램의 모든 코드를 가지고 있지 않습니다. "왜 그럴 수 있니?", "할 필요 없다", "그 코드는 컴파일되지 않는다"등의 질문을하지 마십시오.
내 더러운 솔루션
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);
}
왜 const가되어야합니까? –
가짜 코드를 "당신의 문제를 설명"하는 대신, 실제로 간단한 컴파일 가능한 예제를 만드는 것이 어떻습니까? 마찬가지로 쉽고 이해하기 어려웠을 것입니다. –