Click here to Skip to main content
15,919,245 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
Generalcall OnDraw() outside View/Doc Pin
birdman6328-Jul-04 16:31
birdman6328-Jul-04 16:31 
GeneralRe: call OnDraw() outside View/Doc Pin
Johan Rosengren28-Jul-04 19:56
Johan Rosengren28-Jul-04 19:56 
GeneralRe: call OnDraw() outside View/Doc Pin
birdman6329-Jul-04 3:42
birdman6329-Jul-04 3:42 
Generalabout dial-in question! Pin
china_yl28-Jul-04 15:21
china_yl28-Jul-04 15:21 
QuestionAnyone care to tell me why this is 24 bytes? Pin
Link260028-Jul-04 14:51
Link260028-Jul-04 14:51 
AnswerRe: Anyone care to tell me why this is 24 bytes? Pin
JimRivera28-Jul-04 15:26
JimRivera28-Jul-04 15:26 
AnswerRe: Anyone care to tell me why this is 24 bytes? Pin
TheDoctor28-Jul-04 15:52
TheDoctor28-Jul-04 15:52 
AnswerRe: Anyone care to tell me why this is 24 bytes? Pin
ssiegel28-Jul-04 17:35
ssiegel28-Jul-04 17:35 
In a word: boundary alignment. ID is an unsigned int and MAJOR, an enum, also defaults to an int datatype. Ints are 4-byte fields that are naturally aligned on four byte boundarys. Therefore the compiler places the int fields on four byte boundarys. Doubles go on an eight byte boundary.

If the struct does not have the fields ordered in descend size of datatypes, (doubles, ints, short ints and finally char/char array), then the compiler silently inserts unreachable filler alignment bytes. Doubles, ints, etc. are boundary aligned to improve register load performance. On certain types of machines fetching unaligned data can cause an execption.

You can use a #pragma to modify the default boundary alighment.

You can see the result of what the compiler has done by generating a listing that details the struct.

Offset length Field
0 10 name
10 2 unreachable filler inserted by the compiler
12 4 ID
16 1 sex
17 3 unreachable filler inserted by the compiler
20 4 major

Total length=24


Sam
AnswerRe: Anyone care to tell me why this is 24 bytes? Pin
SOCM_FP_CPP29-Jul-04 0:33
SOCM_FP_CPP29-Jul-04 0:33 
GeneralRe: Anyone care to tell me why this is 24 bytes? Pin
Link260029-Jul-04 0:39
Link260029-Jul-04 0:39 
GeneralRe: Anyone care to tell me why this is 24 bytes? Pin
SOCM_FP_CPP29-Jul-04 0:51
SOCM_FP_CPP29-Jul-04 0:51 
GeneralRe: Anyone care to tell me why this is 24 bytes? Pin
Link260029-Jul-04 1:02
Link260029-Jul-04 1:02 
GeneralRe: Anyone care to tell me why this is 24 bytes? Pin
SOCM_FP_CPP29-Jul-04 1:18
SOCM_FP_CPP29-Jul-04 1:18 
GeneralRe: Anyone care to tell me why this is 24 bytes? Pin
Rick York29-Jul-04 6:32
mveRick York29-Jul-04 6:32 
GeneralCreateProcess Pin
Paul Selormey28-Jul-04 11:58
Paul Selormey28-Jul-04 11:58 
GeneralRe: CreateProcess Pin
valikac28-Jul-04 14:00
valikac28-Jul-04 14:00 
GeneralRe: CreateProcess Pin
Jörgen Sigvardsson28-Jul-04 14:04
Jörgen Sigvardsson28-Jul-04 14:04 
GeneralRe: CreateProcess Pin
Paul Selormey28-Jul-04 14:41
Paul Selormey28-Jul-04 14:41 
GeneralRe: CreateProcess Pin
Jörgen Sigvardsson28-Jul-04 14:03
Jörgen Sigvardsson28-Jul-04 14:03 
GeneralRe: CreateProcess Pin
Paul Selormey28-Jul-04 14:40
Paul Selormey28-Jul-04 14:40 
Questiondig fuction for Windows ?? Pin
otrcomm28-Jul-04 10:57
otrcomm28-Jul-04 10:57 
General(Probably easy to answer:) Initializing splitter pane sizes with other controls in the mainframe client area (Doc/View) Pin
Scolex28-Jul-04 10:53
Scolex28-Jul-04 10:53 
GeneralRe: (Probably easy to answer:) Initializing splitter pane sizes with other controls in the mainframe client area (Doc/View) Pin
Johan Rosengren28-Jul-04 20:06
Johan Rosengren28-Jul-04 20:06 
GeneralRe: (Probably easy to answer:) Initializing splitter pane sizes with other controls in the mainframe client area (Doc/View) Pin
Scolex29-Jul-04 9:48
Scolex29-Jul-04 9:48 
GeneralRe: (Probably easy to answer:) Initializing splitter pane sizes with other controls in the mainframe client area (Doc/View) Pin
David Crow29-Jul-04 2:35
David Crow29-Jul-04 2:35 

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.