This article provides a list of C extensions supported by LabWindows/CVI 2013 and 2015. Significant changes were made to the compiler between LabWindows/CVI 2013 and 2015 which may result in compiler errors. Refer to the table below to see what support has changed.
For other versions of LabWindows/CVI, the C extensions documentation can be found in the LabWindows/CVI Help that installs with the software. To locate the help documentation:
The default language standard of the LabWIndows/CVI 2013 and later compiler is GNU89. GNU89 is the C89 specification with GNU extensions supported, which includes some C99 features. The following table lists C extensions that are available in LabWindows/CVI 2013 and LabWindows/CVI 2015.
Supported in LabWindows/CVI 2013 | Supported in LabWindows/CVI 2015 | |||
C Extensions | GNU89 | C99 | GNU89 | C99 |
Supported in LabWindows/CVI 2013 | Supported in LabWindows/CVI 2015 | |||
C Extensions | GNU89 | C99 | GNU89 | C99 |
Alignment | Yes | Yes | Yes | Yes |
Alternate Keywords: __const__, __asm__, etc., for header files. | Yes | Yes | Yes | Yes |
Asm Labels: Give a name to variables and functions for __asm__ use (use __asm__ keyword only). | Yes | Yes | Yes | Yes |
Atomic Builtins: Built-in functions for atomic memory access. | Partial: all except __sync_fetch_and _nand and __sync_nand _and_fetch. | Partial: all except __sync_fetch_and _nand and __sync_nand _and_fetch. | Partial: all except __sync_fetch_and _nand and __sync_nand _and_fetch. | Partial: all except __sync_fetch_and _nand and __sync_nand _and_fetch. |
Attribute Syntax: Formal syntax for attributes. | Yes | Yes | Yes | Yes |
Attributes on Enumerators | Yes | Yes | Yes | Yes |
Availability Attribute | No | No | No | No |
Binary constants: Binary constants using the 0b prefix. | Yes | Yes | No ( Bug ID: 539474) | No ( Bug ID: 539474) |
Blocks | No | No | No | No |
_Bool data type | Partial | Partial | Partial | Partial |
Builtin Functions | No | No | Yes | Yes |
Builtin Macros | Yes | Yes | Yes | Yes |
C++ Comments: C++ comments are recognized. | Yes | Yes | Yes | Yes |
Case Ranges: 'case 1 ... 9' and such. | No | No | No | No |
Cast to Union: Casting to union type from any member of the union. | Yes, with warning | Yes, with warning | Yes, with warning | Yes, with warning |
Character Escapes: You can use \e as ASCII escape. | Yes | Yes | Yes | Yes |
Checks for Standard Language Features | No | No | Partial: (without c_thread_local); query extension using __has_extension. | Partial: (without c_thread_local); query extension using __has_extension. |
Checks for Type Traits | No | No | No | No |
Complex Numbers: Data types for complex numbers. | Partial | Partial | No ( Bug ID: 541058) | No ( Bug ID: 541058) |
Compound Literals: Give structures, unions or arrays as values. | Yes | Yes | No ( Bug ID: 540675) | No ( Bug ID: 540675) |
Concatenation of wide and non-wide character strings | Yes | Yes | Yes | Yes |
Conditionals: Omitting the middle operand of a ?: expression. | No | No | No | No |
Constraints: Constraints for asm operands. | Partial: All except 'H', 's', ' ', '?', '!', '&', '%', '#', '*'. | Partial: All except 'H', 's', ' ', '?', '!', '&', '%', '#', '*'. | Partial: All except 'H', 's', ' ', '?', '!', '&', '%', '#', '*'. | Partial: All except 'H', 's', ' ', '?', '!', '&', '%', '#', '*'. |
Constructing Calls: Dispatching a call to another function. | No | No | No | No |
Decimal Float: Decimal Floating Types. | No | No | No | No |
Designated Inits: Labeling elements of initializers. | Yes, with warning | Yes, with warning | Yes, with warning | Yes, with warning |
Digraphs and Trigraphs | Yes | Yes | Yes | Yes |
Dollar Signs: You can use dollar signs in identifiers. | Partial | Partial | Partial | Partial |
Duplicate type qualifiers | Yes | Yes | Yes | Yes |
Empty Structures: Structures with no members. | Yes, with warning | Yes, with warning | Yes, with warning | Yes, with warning |
Escaped Newlines: Slightly looser rules for escaped newlines. | No, with warning | No, with warning | No, with warning | No, with warning |
Explicit Register Variables - Store a local variable in a register. | Yes | Yes | Yes | Yes |
Extended Asm: Assembler Instructions with C Expression Operands | No | No | No | No |
Extensions for Dynamic Analysis | No | No | No | No |
Extensions for Static Analysis | Partial: Only __noreturn__. | Partial: Only __noreturn__. | Partial: Only __noreturn__. | Partial: Only __noreturn__. |
Feature Checking Macros | Partial: __has_extension not supported. | Partial: __has_extension not supported. | Partial: __has_extension not supported. | Partial: __has_extension not supported. |
Fixed-Point: Fixed-Point Types. | No | No | No | No |
Flexible Array: Members at the end of a structure or union. | Yes | Yes | Yes, with warning | Yes |
Floating Types: Additional Floating Types | No | No | No | No |
Format String Checking | Yes | Yes | Yes | Yes |
Function Attributes: Declaring that functions have no side effects, or that they can never return. | Yes | Yes | Yes | Yes |
Function Names: Printable strings which are the name of the current function. | Yes | Yes | Yes | Yes |
Function Overloading in C | Yes | Yes | Yes | Yes |
Function Prototypes: Prototype declarations and old-style definitions. | Yes | Yes | Yes, with warning | Yes, with warning |
Hex Floats: Hexadecimal floating-point constants. | Yes | Yes | Yes, with warning | Yes |
Include File Checking Macros | Yes | Yes | Yes | Yes |
Incomplete Enums: enum foo;, with details to follow. | Yes, with warning | Yes, with warning | Yes, with warning | Yes, with warning |
Initializer lists for complex numbers in C | No | No | No | No |
Initializers: Non-constant initializers. | Yes | Yes | Yes | Yes |
Inline: Defining inline functions (as fast as macros). | Yes | Yes | Yes | Yes |
Labels as Values: Getting pointers to labels, and computed gotos. | No | No | No | No |
Local Labels: Labels local to a block. | No | No | No | No |
Long Long: Double-word integers, long long int. | Yes, with warning | Yes | Yes, with warning | Yes |
Yes | Yes | Yes | Yes | |
Mixed Declarations: Mixing declarations and code. | Yes, with warning | Yes | Yes, with warning | Yes |
Nested Functions: As in Algol and Pascal, lexical scoping of functions. | No | No | No | No |
New limit for #line directive | Yes | Yes | Yes | Yes |
Non-standard C++11 Attributes | No | No | No | No |
Object Size Checking: Built-in functions for limited buffer overflow checking. | Yes | Yes | Yes | Yes |
Objective-C Features | No | No | No | No |
Offsetof: Special syntax for implementing offsetof. | Yes | Yes | Yes | Yes |
Other Builtins: Other built-in functions. | Partial | Partial | Partial | Partial |
Pointer Arithmetic: Arithmetic on void-pointers and function pointers. | No | No | No | No |
Pragmas: Pragmas accepted by GCC | Yes | Yes | Yes | Yes |
_Pragma preprocessing operator | Yes | Yes | Yes | Yes |
Return Address: Getting the return or frame address of a function. | Yes | Yes | Yes | Yes |
snprintf family of functions | Yes, with warning | Yes | Yes | Yes |
Statement Expressions: Putting statements and declarations inside expressions. | No | No | No | No |
Static arrays as function parameters | Yes, with warning | Yes | Yes, with warning | Yes |
Subscripting: Any array can be subscripted, even if not an lvalue. | Yes | Yes | Yes | Yes |
Target Builtins: Built-in functions specific to particular targets. | No | No | No | No |
Target Format Checks: Format checks specific to particular targets. | No | No | No | No |
Target-Specific Extensions | No | No | No | No |
Thread-Local: Per-thread variables. | Yes | Yes | Yes | Yes |
Thread-Safety Annotation Checking | No | No | No | No |
Trailing comma allowed in enum declaration | Yes | Yes | Yes, with warning | Yes |
Type Attributes: Specifying attributes of types. | Yes | Yes | Yes | Yes |
Typeof: typeof, referring to the type of an expression. | No | No | No | No |
Type-generic math | No | No | No | No |
Type Safety Checking | No | No | No | No |
Unnamed Fields: Unnamed struct/union fields within structs/unions. | Yes | Yes | Yes, with warning | Yes, with warning |
User-Specified System Frameworks | No | No | No | No |
Variable Attributes: Specifying attributes of variables. | Partial: All except shared, tls_model, __ms_struct__, and __gcc_struct__. | Partial: All except shared, tls_model, __ms_struct__, and __gcc_struct__. | Partial: All except shared and __gcc_struct__. | Partial: aligned attribute supported. |
Variable Length: Arrays whose length is computed at run time. | Yes, with warning | Yes | Yes, with warning | Yes, with warning |
Variadic Macros: Macros with a variable number of arguments. | Yes, with warning | Yes | Yes, with warning | Yes |
Vector Extensions: Using vector instructions through built-in functions. | Yes | Yes | Yes | Yes |
Vectors and Extended Vectors | Partial | Partial | Partial | Partial |
vscanf family of functions | Yes | Yes | Yes | Yes |
Zero Length: Zero-length arrays. | Yes, with warning | Yes, with warning | Yes, with warning | Yes, with warning |