Online Doc
 
Debugger
ISO/POSIX Standards
  Compliance
  Checking
  C++ Deficiencies
    Syntax
    Class Library
Migration Guide
Release Notes
Tutorials
User Guide
Message Index
 
Help
Tech Support
 
 
KAI C++
 
Introduction
What's New?
Documentation
License
Evaluate
Download
Price List
Links
Tools
 
Tech Support
FAQ
 
 
KAI
 
Who We Are
What We Offer
What's New @ KAI
Tech Support
Contact KAI
 
 
 
ISO/POSIX Standards

Standard Compliance

ISO C++

The current standard for C++ is International Standard ISO/IEC 14882-1998(E) Programming languages -- C++. A copy of the ISO C++ standard can be purchased on the WEB from the ANSI Electronic Standards Store. In the KAI C++ documentation, we refer to this standard as ISO C++.

When operating in C++ mode, KAI C++ is extremely close to ISO C++. The C++ Deficiencies section of this document lists all known places where KAI C++ deviates from ISO C++.

ISO C

The current standard for C is International Standard ANSI/ISO 9899-1990 for Programming Languages C, as modified by ANSI/ISO/IEC 9899-1996 Amendment 1: C Integrity. A copy of the ISO C++ standard can be purchased on the WEB from the ANSI Electronic Standards Store. In the KAI C++ documentation, we refer to this standard as ISO C.

When operating in C mode, KAI C++ is conformant to ISO C.

POSIX Threads

The current standard for threads is ISO/IEC 9945-1:1996 Information Technology -- Portable Operating System Interface (POSIX) -- Part 1: System Application: Program Interface (API) [C Language]. A copy of the POSIX Threads standard can be purchased on the WEB from the IEEE Standards Catalog. In the KAI C++ documentation, we refer to this standard as POSIX Threads.

KAI C++ does not provide an implementation of POSIX Threads. Instead, each operating system manufacturer provides an implementation of POSIX Threads. Conformance with the POSIX Threads standard is left up to the operating system manufacturer.

KAI C++ does provide a command line option, --thread_safe, which causes KAI C++ to generate code that is compatible with the operating system's implementation of POSIX Threads. For C++ this means somewhat more than the traditional re-entrant code. It includes the use of the operating system's implementation of POSIX Thread mutexs to control construction and destruction of static objects, and other shared objects hidden from the user.

Undocumented Deviations

If you encounter deviations from ISO C++, ISO C or POSIX Threads that are not documented, please let us know!

Checking Standard Conformance

Normally, KAI C++ operates in a relaxed mode where many common extensions to C and C++ are accepted. There are command line options for requesting that no extensions to ISO C++ or ISO C be allowed.

ISO C++

There are two controls for checking comformance to ISO C++:

Certain system have #include files in the system header file directories that are not standard conforming. If you encounter compilation errors in system header files while using --strict, consider using the slightly relaxed system specific forms of restrict that are available on systems that have these problems. (for example: --linux_strict).

ISO C

Use the --c --strict command line options to select full conformance to ISO C.

C++ Deficiencies

Syntax/Semantic Features

These elements of the language syntax or semantics are not implemented in KAI C++ version 3.4.
  1. Reinterpret_cast does not allow casting a pointer to member of one class to a pointer to member of another class if the classes are unrelated
  2. Two-phase name binding in templates, as described in [temp.res] and [temp.dep] of the standard
  3. Putting a try/catch around the initializers and body of a constructor
  4. Template template parameters
  5. Universal character set escapes (e.g., \uabcd)
  6. The export keyword for templates

Class Library Features

These elements of the standard class library are not implemented in KAI C++ version 3.4.
  1. Selecting locale by "name"
  2. Class library functions that require parameters of types wchar
  3. The default namespace and the std namespace both contain the name of some extern "C" library functions.

 


Copyright © 1999 by Kuck & Associates, Inc. All rights reserved.