6. Extensions to the C Language Family....................................................................................... 121
6.1. Statements and Declarations in Expressions..................................................................121
6.2. Locally Declared Labels ................................................................................................122
6.3. Labels as Values............................................................................................................. 122
6.4. Nested Functions............................................................................................................ 123
6.5. Constructing Function Calls .......................................................................................... 125
6.6. Referring to a Type with typeof .................................................................................. 125
6.7. Generalized Lvalues.......................................................................................................127
6.8. Conditionals with Omitted Operands............................................................................. 128
6.9. Double-Word Integers.................................................................................................... 128
6.10. Complex Numbers .......................................................................................................128
6.11. Hex Floats ....................................................................................................................129
6.12. Arrays of Length Zero ................................................................................................. 129
6.13. Structures With No Members ...................................................................................... 130
6.14. Arrays of Variable Length............................................................................................ 130
6.15. Macros with a Variable Number of Arguments. ..........................................................131
6.16. Slightly Looser Rules for Escaped Newlines...............................................................132
6.17. String Literals with Embedded Newlines ....................................................................132
6.18. Non-Lvalue Arrays May Have Subscripts ................................................................... 133
6.19. Arithmetic on void- and Function-Pointers ................................................................133
6.20. Non-Constant Initializers ............................................................................................. 133
6.21. Compound Literals....................................................................................................... 133
6.22. Designated Initializers ................................................................................................. 134
6.23. Case Ranges.................................................................................................................136
6.24. Cast to a Union Type....................................................................................................136
6.25. Mixed Declarations and Code......................................................................................137
6.26. Declaring Attributes of Functions................................................................................137
6.27. Attribute Syntax ...........................................................................................................143
6.28. Prototypes and Old-Style Function Definitions ........................................................... 146
6.29. C++ Style Comments...................................................................................................147
6.30. Dollar Signs in Identifier Names.................................................................................. 147
6.31. The Character [ESC] in Constants ............................................................................... 147
6.32. Inquiring on Alignment of Types or Variables ............................................................ 147
6.33. Specifying Attributes of Variables............................................................................... 147
6.33.1. i386 Variable Attributes ................................................................................ 151
6.34. Specifying Attributes of Types ....................................................................................151
6.35. Type Attributes.............................................................................................................154
6.35.1. i386 Type Attributes......................................................................................155
6.36. An Inline Function is As Fast As a Macro................................................................... 155
6.37. Assembler Instructions with C Expression Operands.................................................. 156
6.37.1. i386 floating point asm operands .................................................................. 160
6.38. Constraints for asmOperands .......................................................................................161
6.38.1. Simple Constraints........................................................................................ 161
6.38.2. Multiple Alternative Constraints...................................................................163
6.38.3. Constraint Modifier Characters.....................................................................164
6.38.4. Constraints for Particular Machines..............................................................165
6.39. Controlling Names Used in Assembler Code ..............................................................173
6.40. Variables in Specified Registers................................................................................... 174
6.40.1. Defining Global Register Variables ..............................................................174
6.40.2. Specifying Registers for Local Variables......................................................175
6.41. Alternate Keywords ..................................................................................................... 176
6.42. Incomplete enumTypes ................................................................................................ 176
6.43. Function Names as Strings........................................................................................... 176
6.44. Getting the Return or Frame Address of a Function....................................................177
6.45. Using vector instructions through built-in functions ................................................... 178
6.46. Other built-in functions provided by GCC ..................................................................179