[英]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.