“Deprecated”意味着你不应该使用它,而且将来可能会被移除。由于两个标准都说它已经被弃用了,这意味着它已经正式被弃用了。
stdin
的文件内容且已附加到该文件时,您才能使用 gets
。这种情况几乎不可能实现,特别是在多进程系统上,其他进程可能会异步修改文件,导致程序出现未定义行为。因此,从实际目的来看,任何使用 gets
的程序都具有未定义的行为(即存在可能导致其出现未定义行为的输入/环境条件),尤其是如果您的程序拥有高于数据提供者的特权,则可能导致权限被破坏。
编辑:好的,下面是我能想到的一个安全使用 gets
的例子。if (feof(stdin)) gets(buf);
好吧,它在C11标准中完全被移除了,所以我认为答案是肯定的。
要等一段时间才能在所有地方实现C++11。
此外,大多数编译器甚至还没有完全支持C99。
例如,微软的编译器就不支持。
因此,在C和C++中都没有被弃用。