c - 限制限定符编译错误

标签 c mingw codeblocks

我正在使用 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/

相关文章:

c - LLVM 优化错误或未定义的行为?

c - 理解 C 语言中的指针到指针逻辑

c - C 中的复合语句是左值(或右值)吗?

更改结构模块指针

c++ - SVG 图标未显示在 Windows 中的 Qt4 发布版本中

c++ - 对 `Cat::Grizzly()' 的 undefined reference |

python - 无法在 Windows 10 collect2.exe 错误上使用 Python27 MingW 安装 leven 包

c++ - MinGW 链接 GLFW 出错

c++ - 一般学习资料中 wxWidgets 和 GUI 的新手? (wxWidgets 3.0、C++、Win 7、CodeBlocks)

c - Windows 操作系统中 Code::Blocks 编辑器中对 fork() 的 undefined reference