C Extensions Supported by LabWindows™/CVI™

Visión General

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:

 

  1. Open the Start Menu Programs and navigate to National Instruments >> LabWindows/CVI <xxxx> Documentation.
  2. Launch the LabWindows/CVI Help. 
  3. In the Contents tree, navigate to Programmer Reference >> LabWindows/CVI Compiler Overview >> C Language Extensions.

C Extensions Available in LabWindows/CVI 2013 and 2015

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

Messages on deprecated and

 unavailable Attributes

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