当一个新的C编程语言标准成为官方标准时,旧的标准总是兼容的,这是什么行为?
当一个新的C编程语言标准成为官方标准时,旧的标准总是兼容的,这是什么行为?,c,C,c89/90c99c11c18之间是否存在任何弃用?或者仅建议避免使用某些函数,如strlen,并使用“更安全的”strnlen\s?以下代码在C89中有效,在C99中被弃用,在C11中无效,并且由于使用了不安全的函数gets: #include <stdio.h> int main() { char str[100]; puts("What's your name?"); gets(str); printf("Hello %s!\n", str);
c89/90
c99
c11
c18
之间是否存在任何弃用?或者仅建议避免使用某些函数,如strlen
,并使用“更安全的”strnlen\s
?以下代码在C89中有效,在C99中被弃用,在C11中无效,并且由于使用了不安全的函数gets
:
#include <stdio.h>
int main()
{
char str[100];
puts("What's your name?");
gets(str);
printf("Hello %s!\n", str);
}
#包括
int main()
{
char-str[100];
放置(“你叫什么名字?”);
获取(str);
printf(“你好%s!\n”,str);
}
以下代码在C89中有效,在C99中被弃用,在C11和更高版本中无效,因为它使用了不安全的函数gets
:
#include <stdio.h>
int main()
{
char str[100];
puts("What's your name?");
gets(str);
printf("Hello %s!\n", str);
}
#包括
int main()
{
char-str[100];
放置(“你叫什么名字?”);
获取(str);
printf(“你好%s!\n”,str);
}
新标准不能保证兼容,尽管委员会(过于)强调向后兼容
- C90与较新版本不完全兼容李>
- 除了一些修正外,C11和C17与C99兼容
- C17 6.11未来语言方向,以及
- C17 6.32未来图书馆方向
.新标准不能保证兼容,尽管委员会(过于)强调向后兼容
- C90与较新版本不完全兼容李>
- 除了一些修正外,C11和C17与C99兼容
- C17 6.11未来语言方向,以及
- C17 6.32未来图书馆方向
.是;
gets
函数是最大的例子。gets
中提到的函数不仅在C11中被删除,而且实际上被完全删除。变更可在每个标准文件的附录中找到。是的可能副本;gets
函数是最大的例子。gets
中提到的函数不仅在C11中被删除,而且实际上被完全删除。变更可在每个标准文件的附录中找到。可能的副本