我得到了 Ivor Horton 的这本书“Beginning C”,我已经读了一半,我喜欢它;到目前为止,一切都很好。我在 Windows 上使用 Code::Blocks 作为我的 IDE,现在我遇到了大约 3 天无法解决的问题。
作者在<string.h>
中提到了一些“可选”功能, 比如 strnlen_s()
,并且还说这些在新标准 C11 中可用(这本书是 2013 年的;我不知道 C11 实际上有多新),并且他还提供了一段代码来确定“标准库是否是您的 C 编译器附带支持这些可选函数”。
这是代码:
#include <stdio.h>
int main(void)
{
#if defined __STDC_LIB_EXT1__
printf("Optional functions are defined.\n");
#else
printf("Optional functions are not defined.\n");
#endif
return 0;
}
所以我运行代码来检查 Code::Blocks 中的 GCC 是否支持并确定它不支持。这本书没有推荐编译器或 IDE;我自己选择了 Code::Blocks with GCC,因为这是我在大学里做的考试,所以我想我应该熟悉一下环境。
问题是,我不知道如何“解决”这个问题,因为 strnlen()
不起作用,strnlen_s()
行不通,还有其他一堆,我真的无法继续读完一本书。并不是说我需要它们,也不是说我不能以任何其他方式做到这一点(strlen()
工作得很好)但知道如何使用非标准函数会很好。
最佳答案
GCC 的最新版本确实支持 C11,您需要使用编译器标志 -std=c11
启用它。
我假设您正在使用带有 Code::Blocks 的 MinGW 的某种风格 - 我建议使用 MinGW-W64因为它得到积极维护并且是最新的。
此外,MinGW-W64 的 gcc 的捆绑工具链可在 TDM-GCC 获得。 .
Code::Blocks IDE 本身并不关心您使用的是哪个版本的 C,这不会影响您可以使用哪些库。
关于c - 在 Code::Blocks 中使用非标准函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571480/