## Extensions to ISO C

The Carbide C language optionally extends ISO C. In most cases, you can control these extensions using specific pragmas.

- Checking for Standard C and Standard C++ Conformity
- C++ Comments
- Unnamed Arguments in Function Definitions
- A # Not Followed by a Macro Argument
- Using an Identifier After #endif
- Using Typecasted Pointers as lvalues
- Declaring Variables by Address
- ANSI Keywords Only
- Expand Trigraphs
- Character Constants as Integer Values
- Inlining
- Reusing Strings
- Require Function Prototypes
- Map Newlines to CR
- Relaxed Pointer Type Rules
- Use Unsigned Chars
- Using long long Integers
- Converting Pointers to Types of the Same Size
- Getting Alignment and Type Information at Compile Time
- Arrays of Zero Length in Structures
- Intrinsic Functions for Bit Rotation
- The “D” Constant Suffix
- The short double Data Type
- The __typeof__() and typeof() operators
- Initialization of Local Arrays and Structures
- Ranges in case statements
- The __FUNCTION__ Predefined Identifier
- GCC Extension Support
- Multibyte and Unicode Support
- The __declspec Declarator

For information on target-specific extensions, refer to the Targeting manual for your particular target.