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