Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当一个新的C编程语言标准成为官方标准时,旧的标准总是兼容的,这是什么行为?_C - Fatal编程技术网

当一个新的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中被删除,而且实际上被完全删除。变更可在每个标准文件的附录中找到。可能的副本