004 gcc 編譯 C/C++ 默認使用哪個標准


0. 前言

  • 我挺久沒碰 C,不想就這么忘了,最近重溫了一些相關知識

1. C 語言的幾種“方言”

  • 簡單地說,有這么幾種常見的
年份 名稱
1983 ANSI C
1987 C87
1999 C99
2011 C11
  • C 語言的全國二級等級考試采用的標准是 ANSI C (如果沒變的話)

2. gcc 編譯 C 默認使用哪個標准

  • 查了一些資料,說法不一,大概因為大家使用的是不同版本的 gcc

2.1 我使用的 gcc 版本

$ gcc -v
... ...
Target: x86_64-w64-mingw32
... ...
Thread model: win32
gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project)

2.2 網上的一種方法

  • 我想到之前裝過 Cygwin,就打開試了這條代碼
$ gcc -posix -E -dM - </dev/null
... ...
#define __STDC_VERSION__ 201112L
... ...
  • 結果很長,有用的是這句,但只能看出來是 2011 的版本

2.3 想到了一個 Linux 的命令:man

  • 同樣是在 Win10 的環境打開 Cygwin
$ man gcc
...
gnu11
gnu1x
    GNU dialect of ISO C11. This is the default for C code. The name gnu1x is deprecated.
...
  • 我截了張圖

  • 總算得到了結果:gcc 8.1.0 編譯 C 所使用的默認標准為 gnu11

3. gcc 編譯 C++ 默認使用哪個標准

  • 直接上圖

  • 結論:gcc 8.1.0 編譯 C++ 所使用的默認標准為 gnu++14


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM