Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Compilers are fairly free to do what they like so far as how memory locations line up with the members of structs and unions and other complex data structures.</p> <p>I have seen mysterious run time errors using structs that were due to alignment boundary issues because one part of the source saw the struct one way and another saw it a different way.</p> <p>C basically uses a struct as a template to overlay a memory area and if different files see the struct in different ways, one piece of code is calculating an address offset to a struct member that is different from another.</p> <p>Some compilers will provide a pragma that will allow you to specify a pack action so that you can specify the alignment boundary of struct members.</p> <p>In order to maintain compatibility with hardware, the best course seems to be to use arrays of unsigned character because that way you can index to the unsigned character array element and then select one of the eight bits with bitwise operators. You can then wrap the unsigned character array within various access functions, classes, macros, etc to manipulate the actual data that you want to read and write. Using unsigned character arrays tends to be more portable as well.</p> <p>Bit fields seem to be more of a way for an application to maintain indicators and flags in a more memory conserving fashion but are not as useful for communication with entities (hardware or software) outside of the application. And depending on the compiler and the hardware on which the application is running, using bit fields may introduce a small run time penalty as bit fields are accessed and packed and unpacked.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload