How Can I Determine the Implemented C Standard Version of My Compiler?
Dec 13, 2024 pm 03:59 PMDetermining the Implemented C Standard Version
Determining the C standard implementation of your compiler can be crucial for ensuring compatibility and utilizing the latest language features. Several C standards have been released, including C 98 and C 03.
One method for identifying the standard version is to check the macro __cplusplus.
__cplusplus Macro
According to Bjarne Stroustrup's C 0x FAQ, the __cplusplus macro will be set to a value greater than 199711L for C 11 and higher. However, some compilers may not set this macro correctly.
GCC
gcc has a history of setting __cplusplus to 1, regardless of the language version. This issue was addressed in gcc 4.7.0.
MSVC
MSVC also incorrectly defines __cplusplus as 199711L. To obtain the correct value, either add /Zc:__cplusplus to compiler flags or check the MSVC-specific macro _MSVC_LANG.
Expected __cplusplus Values
- C pre-C 98: 1
- C 98: 199711L
- C 98 TR1: Cannot be determined using __cplusplus
- C 11: 201103L
- C 14: 201402L
- C 17: 201703L
- C 20: 202002L
- C 23: 202302L
Other Methods
If __cplusplus is insufficient or unavailable, other approaches include:
- Compiler-specific macros: Inspecting compiler-defined macros may reveal the implemented standard version.
- Boost.Config: This library provides macros for checkingspecificC features.
- Feature evaluation: Running code that utilizes specific features can determine their availability and, consequently, the implemented standard version.
It's important to note that not all compilers fully implement all features of a C standard. Careful examination of compiler compatibility and feature support is necessary to ensure reliable code execution.
The above is the detailed content of How Can I Determine the Implemented C Standard Version of My Compiler?. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

What are the types of values returned by c language functions? What determines the return value?

What are the definitions and calling rules of c language functions and what are the

C language function format letter case conversion steps

Where is the return value of the c language function stored in memory?

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?

How does the C Standard Template Library (STL) work?
