From 1:00 AM - 6:00 AM CST on Saturday, January 23, ni.com will be undergoing system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From 1:00 AM - 6:00 AM CST on Saturday, January 23, ni.com will be undergoing system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
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 |
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 |