Click here to Skip to main content
15,894,410 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionStruct with union with different sized members - How can I declare the smallest struct? Pin
arnold_w6-Mar-22 1:17
arnold_w6-Mar-22 1:17 
AnswerRe: Struct with union with different sized members - How can I declare the smallest struct? Pin
Mircea Neacsu6-Mar-22 2:39
Mircea Neacsu6-Mar-22 2:39 
No, you cannot. If you need a flexible size structure, the idiomatic solution is to add a zero size array at the end of the structure. Then, presumably, one of the fixed length fields tells you the size of the variable part. Something like this:
C++
struct MyStruct
{
  int small_or_big;
  int variable_part[0]; //or int variable_part[] if you want to conform to C90
};

struct MyStruct *ptr;
if (ptr->small_or_big == BIG_STRUCT)
{
  ptr->variable_part[999] = some_value; //we know that variable part size is 1000
  //...
}


When you allocate the structure you have to account for the variable part:
C++
//...
ptr_small = malloc(sizeof(MyStruct) + SIZE_OF_SMALL_PART);
ptr_small->big_or_small = SMALL_STRUCT;

ptr_big = malloc (sizeof(MyStruct) + SIZE_OF_BIG_PART);
ptr_big->big_or_small = BIG_STRUCT;

Mircea


modified 6-Mar-22 11:10am.

QuestionLine Break Rich Edit Pin
ForNow5-Mar-22 17:42
ForNow5-Mar-22 17:42 
AnswerRe: Line Break Rich Edit Pin
Richard Andrew x646-Mar-22 4:33
professionalRichard Andrew x646-Mar-22 4:33 
GeneralRe: Line Break Rich Edit Pin
ForNow6-Mar-22 5:19
ForNow6-Mar-22 5:19 
QuestionC++ even numbers query Pin
Member 1555051328-Feb-22 16:30
Member 1555051328-Feb-22 16:30 
AnswerRe: C++ even numbers query Pin
Victor Nijegorodov28-Feb-22 20:31
Victor Nijegorodov28-Feb-22 20:31 
GeneralRe: C++ even numbers query Pin
Member 1555051328-Feb-22 21:33
Member 1555051328-Feb-22 21:33 
GeneralRe: C++ even numbers query Pin
Victor Nijegorodov28-Feb-22 23:02
Victor Nijegorodov28-Feb-22 23:02 
GeneralRe: C++ even numbers query Pin
Member 155505131-Mar-22 17:31
Member 155505131-Mar-22 17:31 
GeneralRe: C++ even numbers query Pin
Victor Nijegorodov1-Mar-22 22:32
Victor Nijegorodov1-Mar-22 22:32 
GeneralRe: C++ even numbers query Pin
Richard MacCutchan1-Mar-22 22:40
mveRichard MacCutchan1-Mar-22 22:40 
QuestionRe: C++ even numbers query Pin
David Crow1-Mar-22 3:50
David Crow1-Mar-22 3:50 
AnswerRe: C++ even numbers query Pin
Richard Andrew x642-Mar-22 9:42
professionalRichard Andrew x642-Mar-22 9:42 
QuestionC Pin
Christine Belisario25-Feb-22 20:48
Christine Belisario25-Feb-22 20:48 
AnswerRe: C Pin
Richard MacCutchan25-Feb-22 22:52
mveRichard MacCutchan25-Feb-22 22:52 
AnswerRe: C Pin
RedDk26-Feb-22 8:47
RedDk26-Feb-22 8:47 
GeneralRe: C Pin
Greg Utas26-Feb-22 10:32
professionalGreg Utas26-Feb-22 10:32 
Questionhow to dynamically delete sub-control created in run-time Pin
wuxianzhong18-Feb-22 15:54
wuxianzhong18-Feb-22 15:54 
AnswerRe: how to dynamically delete sub-control created in run-time Pin
Gerry Schmitz18-Feb-22 20:30
mveGerry Schmitz18-Feb-22 20:30 
AnswerRe: how to dynamically delete sub-control created in run-time Pin
Victor Nijegorodov18-Feb-22 21:18
Victor Nijegorodov18-Feb-22 21:18 
AnswerRe: how to dynamically delete sub-control created in run-time Pin
Randor 19-Feb-22 6:27
professional Randor 19-Feb-22 6:27 
QuestionAzure DevOps Chocolatey question : install vs2022 Pin
Maximilien17-Feb-22 7:52
Maximilien17-Feb-22 7:52 
AnswerRe: Azure DevOps Chocolatey question : install vs2022 Pin
Mircea Neacsu17-Feb-22 8:02
Mircea Neacsu17-Feb-22 8:02 
GeneralRe: Azure DevOps Chocolatey question : install vs2022 Pin
Maximilien18-Feb-22 3:23
Maximilien18-Feb-22 3:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.