c - 在 Code::Blocks 中使用非标准函数

标签 c gcc codeblocks c11 tr24731

我得到了 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/

相关文章:

c++ - 如何在 Windows 上为 NetBeans 和 gcc 添加库包含路径?

python - 具有任意局部变量的 exec() 字节码?

C 程序逐行读取文本文件,然后将这些行打印到终端

objective-c - 我可以在 C 宏中使用 #if 指令吗?

c++ - 静态库 (OGDF) 中体系结构的 undefined symbol

C写入错误: mcleanup

c++ - 如何隐藏wxWidgets wxGrid索引

c - pthread 中的信号处理

c++ - 将外部 C 库加载到现有的 C++ 项目中(例如 ffmpeg/libavcodec - 一步一步)

c - 将特定库与 gcc 链接