任何禁用“tempnam'”的方法;危险,最好使用'mkstemp';gcc警告?
我使用tempnam()只是为了获取目录名,因此此安全警告不适用于我的情况。如何禁用它?我找不到任何开关来执行此操作。您可以使用GCC的任何禁用“tempnam'”的方法;危险,最好使用'mkstemp';gcc警告?,gcc,warnings,Gcc,Warnings,我使用tempnam()只是为了获取目录名,因此此安全警告不适用于我的情况。如何禁用它?我找不到任何开关来执行此操作。您可以使用GCC的-Wno deprecated declarations选项禁用所有类似的警告。不过,我建议您正确处理警告,并采纳编译器的建议。如果您确实只想要目录名,请使用字符串常量宏p\u tmpdir,该宏在的tempnam()中定义函数返回一个指向有效文件名的字符串的指针,这样当选中tempnam()时,具有此名称的文件就不存在了。” 该警告是由于检查和稍后创建文件之间
-Wno deprecated declarations
选项禁用所有类似的警告。不过,我建议您正确处理警告,并采纳编译器的建议。如果您确实只想要目录名,请使用字符串常量宏p\u tmpdir
,该宏在
的tempnam()中定义函数返回一个指向有效文件名的字符串的指针,这样当选中tempnam()时,具有此名称的文件就不存在了。”
该警告是由于检查和稍后创建文件之间的竞争条件引起的
您想只获取目录名吗?那有什么好处呢
正如陌生人已经说过的,您可以使用-Wno不推荐的声明来禁用此功能(以及类似的警告)。答案是否定的,因为在许多系统上,实现此功能的GNU C库(glibc)经过编译,以便在使用时触发链接器警告 见:
- -我不久前提交了这个
- -2010年提交李>
- -我不久前提交了这个
请注意,该问题并非特定于GCC-任何链接器都应该发出此警告,其触发器在编译库中是“硬编码”的。我需要在临时目录中创建一个FIFO文件,因此我使用dirname(tempnam…)对我来说,它不会使此类警告静音。对我来说,它也没有静音,not wIt是在链接而非编译阶段生成的警告,因此此警告无效。(将其交给链接阶段也不起作用)。(至少在g++4.8.2中)