【发布时间】:2023-03-17 12:28:01
【问题描述】:
我完全知道this question的存在。
但是,printf_s 将存在说明符 %n 视为错误,因此不会期望来自printf_s 的格式写入操作。 restrict 在这里有什么意义?
【问题讨论】:
-
该帖子上接受的答案有 “由于 restrict 可能会或可能不会使代码运行得更快,但它永远不会让它变慢(假设编译器是理智的),应该始终使用它"
-
-
这些项目符号用于权衡风险与收益。两者都必须不使用它,即如果存在 UB 的重大风险并且没有真正的好处,请不要使用它。但是您详细说明的是缺乏未定义行为的可能性。这意味着我们留下了一个没有风险的潜在改进。所以按照最初的建议,使用它。
-
这很令人信服,但是像
strlen这样的其他标准库函数并不这么认为。我仍然想知道为什么printf_s会有所不同。 -
您必须记住,不同时期的不同人致力于特定功能的标准化。有时他们会错过可以改进的地方。
标签: c c11 restrict-qualifier