C Extensions Supported by LabWindows™/CVI™

Overview

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 2013Supported in LabWindows/CVI 2015
C ExtensionsGNU89C99GNU89C99
AlignmentYesYesYesYes

Alternate Keywords: __const__, 

__asm__, etc., for header files.

YesYesYesYes
Asm Labels: Give a name to variables and functions for __asm__ use (use __asm__ keyword only).YesYesYesYes
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.YesYesYesYes
Attributes on EnumeratorsYesYesYesYes
Availability AttributeNoNoNoNo
Binary constants: Binary constants using the 0b prefix.YesYesNo ( Bug ID: 539474)No ( Bug ID: 539474)
BlocksNoNoNoNo
_Bool data typePartialPartialPartialPartial
Builtin FunctionsNoNoYesYes
Builtin MacrosYesYesYesYes
C++ Comments: C++ comments are recognized.YesYesYesYes
Case Ranges: 'case 1 ... 9' and such.NoNoNoNo
Cast to Union: Casting to union type from any member of the union.Yes, with warningYes, with warningYes, with warningYes, with warning
Character Escapes: You can use \e as ASCII escape.YesYesYesYes
Checks for Standard Language FeaturesNoNoPartial: (without c_thread_local); query extension using __has_extension.Partial: (without c_thread_local); query extension using __has_extension.
Checks for Type TraitsNoNoNoNo
Complex Numbers: Data types for complex numbers.PartialPartialNo ( Bug ID: 541058)No ( Bug ID: 541058)
Compound Literals: Give structures, unions or arrays as values.YesYesNo ( Bug ID: 540675)No ( Bug ID: 540675)
Concatenation of wide and non-wide character stringsYesYesYesYes
Conditionals: Omitting the middle operand of a ?: expression.NoNoNoNo
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.NoNoNoNo
Decimal Float: Decimal Floating Types.NoNoNoNo
Designated Inits: Labeling elements of initializers.Yes, with warningYes, with warningYes, with warningYes, with warning
Digraphs and TrigraphsYesYesYesYes
Dollar Signs: You can use dollar signs in identifiers.PartialPartialPartialPartial
Duplicate type qualifiersYesYesYesYes
Empty Structures: Structures with no members.Yes, with warningYes, with warningYes, with warningYes, with warning
Escaped Newlines: Slightly looser rules for escaped newlines.No, with warningNo, with warningNo, with warningNo, with warning
Explicit Register Variables - Store a local variable in a register.YesYesYesYes
Extended Asm: Assembler Instructions with C Expression OperandsNoNoNoNo
Extensions for Dynamic AnalysisNoNoNoNo
Extensions for Static AnalysisPartial: Only __noreturn__.Partial: Only __noreturn__.Partial: Only __noreturn__.Partial: Only __noreturn__.
Feature Checking MacrosPartial: __has_extension not supported.Partial: __has_extension not supported.Partial: __has_extension not supported.Partial: __has_extension not supported.
Fixed-Point: Fixed-Point Types.NoNoNoNo
Flexible Array: Members at the end of a structure or union.YesYesYes, with warningYes
Floating Types: Additional Floating TypesNoNoNoNo
Format String CheckingYesYesYesYes
Function Attributes: Declaring that functions have no side effects, or that they can never return.YesYesYesYes
Function Names: Printable strings which are the name of the current function.YesYesYesYes
Function Overloading in CYesYesYesYes
Function Prototypes: Prototype declarations and old-style definitions.YesYesYes, with warningYes, with warning
Hex Floats: Hexadecimal floating-point constants.YesYesYes, with warningYes
Include File Checking MacrosYesYesYesYes
Incomplete Enums: enum foo;, with details to follow.Yes, with warningYes, with warningYes, with warningYes, with warning
Initializer lists for complex numbers in CNoNoNoNo
Initializers: Non-constant initializers.YesYesYesYes
Inline: Defining inline functions (as fast as macros).YesYesYesYes
Labels as Values: Getting pointers to labels, and computed gotos.NoNoNoNo
Local Labels: Labels local to a block.NoNoNoNo
Long Long: Double-word integers, long long int.Yes, with warningYesYes, with warningYes

Messages on deprecated and

 unavailable Attributes

YesYesYesYes
Mixed Declarations: Mixing declarations and code.Yes, with warningYesYes, with warningYes
Nested Functions: As in Algol and Pascal, lexical scoping of functions.NoNoNoNo
New limit for #line directiveYesYesYesYes
Non-standard C++11 AttributesNoNoNoNo
Object Size Checking: Built-in functions for limited buffer overflow checking.YesYesYesYes
Objective-C FeaturesNoNoNoNo
Offsetof: Special syntax for implementing offsetof.YesYesYesYes
Other Builtins: Other built-in functions.PartialPartialPartialPartial
Pointer Arithmetic: Arithmetic on void-pointers and function pointers.NoNoNoNo
Pragmas: Pragmas accepted by GCCYesYesYesYes
_Pragma preprocessing operatorYesYesYesYes
Return Address: Getting the return or frame address of a function.YesYesYesYes
snprintf family of functionsYes, with warningYesYesYes
Statement Expressions: Putting statements and declarations inside expressions.NoNoNoNo
Static arrays as function parametersYes, with warningYesYes, with warningYes
Subscripting: Any array can be subscripted, even if not an lvalue.YesYesYesYes
Target Builtins: Built-in functions specific to particular targets.NoNoNoNo
Target Format Checks: Format checks specific to particular targets.NoNoNoNo
Target-Specific ExtensionsNoNoNoNo
Thread-Local: Per-thread variables.YesYesYesYes
Thread-Safety Annotation CheckingNoNoNoNo
Trailing comma allowed in enum declarationYesYesYes, with warningYes
Type Attributes: Specifying attributes of types.YesYesYesYes
Typeof: typeof, referring to the type of an expression.NoNoNoNo
Type-generic mathNoNoNoNo
Type Safety CheckingNoNoNoNo
Unnamed Fields: Unnamed struct/union fields within structs/unions.YesYesYes, with warningYes, with warning
User-Specified System FrameworksNoNoNoNo
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 warningYesYes, with warningYes, with warning
Variadic Macros: Macros with a variable number of arguments.Yes, with warningYesYes, with warningYes
Vector Extensions: Using vector instructions through built-in functions.YesYesYesYes
Vectors and Extended VectorsPartialPartialPartialPartial
vscanf family of functionsYesYesYesYes
Zero Length: Zero-length arrays.Yes, with warningYes, with warningYes, with warningYes, with warning

Was this information helpful?

Yes

No