假设我有一个 C 函数,它满足使用 GCC__attribute__((pure))
或注释的标准__attribute__((const))
,除了对于某些输入参数,该函数可能会执行 alongjmp
或 anabort
或类似的事情,而不是返回。所以它不是你通常所说的“纯”函数。尽管如此,如果 GCC 仅使用这些注释来决定何时可以缓存和重用函数的返回结果,那么似乎仍然可以将这些注释应用于这样的函数。如果它确实返回,则可以假定该函数是其参数的无副作用的纯结果(可能加上全局状态,取决于我们是否使用pure
或注释const
)。
是否有人对这些注释是否可以在这种情况下应用有经验或知识?(我对可以依赖的工作感兴趣,而不仅仅是在某些设置或某些编译标志中发生的工作。)