我正在使用 Code::Blocks 10.05 和 mingw。编译器似乎无法识别 restrict 限定符并返回“错误:在‘src’之前应为‘;’、‘,’或‘)’”。我是否需要传递任何编译器选项才能正确编译它?
int inet_pton4 (const char *restrict src, unsigned char *restrict dst)
p/s: 好像mingw不支持inet_pton4,所以我尝试在我的代码中集成一个开源版本。
最佳答案
如果您的编译器不支持 restrict
关键字,只需将该关键字删除 (a)。
它用于向编译器表明您(开发人员) promise 指针遵循某些涉及别名的属性,这反过来又允许编译器执行某些优化,否则这些优化不一定是安全的。
如果您在支持它的编译器中省略该关键字,它会阻止这些优化(轻微的缺点)。
如果您为不支持该关键字的编译器保留它,则缺点是零(因为它们无论如何都不支持这些优化)并且优点是相当大的,如“它将为你编译":-)
(a) 您可能需要确保首先在 C99 模式下进行编译。虽然您使用的是不理解 restrict
的旧版 gcc
确实可能,但同样有可能您没有编译在 C99 模式下,例如使用 -std=c99
(gcc
文档似乎表明 restrict
甚至回到 3.0 版都得到支持)。
如果由于某种原因您无法激活 C99 模式,我认为 gcc
有一个扩展允许您使用 __restrict
。
关于c - 限制限定符编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7950259/