[英]How can I know the version of c?
"\b"
在我的 Mac 上不起作用。 所以我試圖找到原因。
我認為導致這個問題的原因可能是C的版本。
或者設備可能是。 如果你知道,你能幫幫我嗎? 謝謝你。
C有三個ISO標准版本:C90,C99和C11。 要知道您的程序正在運行哪個C版本,請檢查:
__STDC_VERSION__
宏。
另一方面,如果您想知道的不是C的版本,而是C編譯器的版本,如其他答案所示,請使用適當的選項運行編譯器(例如gcc
和clang
都使用--version
)。
根據您的編譯器,它可以支持不同的C版本。 您可以要求使用帶有gcc
和clang
的-std=
選項來更改用於編譯的編譯器默認C版本,例如: -std=c90
, -std=c99
或-std=c11
。
int main() { if (__STDC_VERSION__ >= 201710L) printf("We are using C18!\n"); else if (__STDC_VERSION__ >= 201112L) printf("We are using C11!\n"); else if (__STDC_VERSION__ >= 199901L) printf("We are using C99!\n"); else printf("We are using C89/C90!\n"); return 0; }
基於@chqrlie 添加的內容...
#include <stdio.h>
int main() {
#if defined __STDC_VERSION__
long version = __STDC_VERSION__;
if ( version == 199901 ) {
printf ("version detected : C99\n");
}
if ( version == 201112 ) {
printf ("version detected : C11\n");
}
if ( version == 201710 ) {
printf ("version detected : C18\n");
}
#else
printf ("version detected : C90\n");
#endif
}
先決條件:應安裝gcc 。
您打開終端並粘貼此 bash 命令:
gcc -dM -E - < /dev/null | grep __STDC_VERSION__ | awk '{ print $2 " --> " $3 }'
對於我的情況,它返回__STDC_VERSION__ --> 201710L
轉換為2017 C 標准 ( c17
)。 你的可以是c89 or c99 or c11
稍微更清潔和更完整的方法
#include <stdio.h>
int main(void) {
#ifdef __STDC_VERSION__
switch (__STDC_VERSION__) {
case 199409:
printf ("C version: C94 (%ld)", __STDC_VERSION__);
break;
case 199901:
printf ("C version: C99 (%ld)", __STDC_VERSION__);
break;
case 201112:
printf ("C version: C11 (%ld)", __STDC_VERSION__);
break;
case 201710:
printf ("C version: C17 (%ld)", __STDC_VERSION__);
break;
default:
printf ("C version: ?? (%ld)", __STDC_VERSION__);
break;
}
#else
printf ("C(89), C(90)");
#endif
#ifdef __STRICT_ANSI__
printf (" (ANSI %d)\n", __STDC__);
#else
printf("\n");
#endif
return 0;
}
測試它:
gcc main.c -o main -std=c90 && main
gcc main.c -o main -std=c99 && main
gcc main.c -o main -std=c11 && main
gcc main.c -o main -std=c17 && main
gcc main.c -o main -std=gnu89 && main
gcc main.c -o main -std=gnu99 && main
gcc main.c -o main -std=gnu11 && main
gcc main.c -o main -std=gnu17 && main
#include <stdio.h>
//What version of C language you're using
int main() {
if(__STDC_VERSION__ >=201710L)
printf("The version is c18!\n");
else if(__STDC_VERSION__ >= 201112L)
printf("The version is C11! \n");
else if (__STDC_VERSION__ >=199901L)
printf("The version is C99!\n");
else
printf("The version you're using is C89/C90");
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.