首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏bit哲学院

    C11 标准特性研究

    参考链接: C++ c32rtomb() 前言 - 需要点开头     C11标准是C语言标准的第三版(2011年由ISO/IEC发布),前一个标准版本是C99标准。    相比C99,C11有哪些变化呢!!所有的测试全部基于能够和标准贴合的特性平台. 但是绝大部   分来源于 GCC. 这里不妨教大家源码安装最新的GCC吧。   a. 正文  -  C11标准特性研究   1、对齐处理     alignof(T)返回T的对齐方式,aligned_alloc()以指定字节和对齐方式分配内存,头文件<stdalign.h>   定义了这些内容 C11 废弃了 gets, 这里是最接近的 api, 相比 fgets 它不会记录最后一个 '\n'.   并且会在最后一个字符添加 '\0'. 原子操作也算是 C11 看着 C++11 急眼了, 直接引入的类型. 把编译器提供的特性纳入标准中.   同样支持的很一般般. 但是可以一用.

    1.6K00发布于 2021-02-17
  • 来自专栏用户2442861的专栏

    哪个版本的gcc才支持c11

    而知,低版本的gcc不支持c11。 (而我此处的eglibc 2.17,和那人的glibc-2.16.0,都是需要支持c11的gcc的) 所以此处想要去搞清楚,什么版本的,哪个版本的,gcc,才支持c11。 :gcc选项是-std=c11 or -std=iso9899:2011 未完成C11标准之前,叫做C1X 带了GNU扩展的:-std=gnu11 2.后来找到: How to enable c11 on later versions of gcc? (glibc 2.16) 【总结】 gcc是到了4.7,才真正支持c11的。

    8.6K20发布于 2018-09-19
  • 来自专栏bit哲学院

    C11与C99的变化对比

    C11标准曾用名C1X。  C11标准是C语言标准的第三个版本,前一个标准版本是C99标准。 2011年12月8日,国际标准化组织(ISO)和国际电工委员会  (IEC)旗下的C语言标准委员会正式发布了C11标准。  C11标准的最终定稿草案是免费开放的,但是正式标准文件是需要付费的。  C11还缺少什么?  1、对IEEE754标准-2008的半精度浮点数的支持。 在标准C语言中,直到C11还只能支持UTF-8编码字符串的格式,采用%s。

    2.8K00发布于 2021-02-17
  • 来自专栏程序人生 阅读快乐

    C语言编程魔法书:基于C11标准

    主要讲解C11标准的语法内容,并且从整个编译、连接到加载过程都会涉及。同时在后会分别介绍GCC编译器与Clang编译器的C语言语法扩展。通过阅读本书,读者能够完全掌握新标准的C语言编程。

    1.3K30发布于 2018-10-10
  • 来自专栏嵌入式项目开发

    C语言C99标准、C11标准新增加的特性

    C11 (ISO/IEC 9899:2011):发布于2011年,C11标准在C99基础上进一步完善,加入了对多线程编程的支持(通过<threads.h>库)、增强了Unicode支持(通过<uchar.h C18 (ISO/IEC 9899:2018):发布于2018年,这个版本主要是对C11标准的小幅修订和澄清,没有引入重大的新特性,主要目的是解决C11标准中发现的问题和歧义,提高标准的清晰度和一致性。 C18有时也被视为C11的一个修正版。目前,最新的官方标准是C18,但需要注意的是,并非所有的编译器都已经完全实现了最新标准的所有特性,开发者在编写代码时应考虑目标编译器的实际支持情况。 C11 (ISO/IEC 9899:2011)C11标准引入了若干新特性,以下是一些主要特性的示例代码:1. from main thread\n"); return 0;}这段代码展示了如何使用C11中的<threads.h>库创建和等待一个线程完成。2.

    1.2K00编辑于 2025-01-16
  • 来自专栏Python进阶之路

    ‘for‘ loop initial declarations are only allowed in C99 or C11 mode 解决方法

    语言程序遇到如下异常,不能成功编译运行程序 使用 GCC 编译代码是报出 [Error] ‘for’ loop initial declarations are only allowed in C99 or C11 mode [Note] use option -std=c99,-std=gnu99,-std=c11 or-std=gnu11 to compile your code 二、解决方法 错误,这是因为在

    8.8K30发布于 2021-12-01
  • 来自专栏Python进阶之路

    解决Dev-C++ ‘for‘ loop initial declarations are only allowed in C99 or C11 mode

    在使用 Dev-C++ 编写 C 语言程序时出现: [Error] ‘for’ loop initial declarations are only allowed in C99 or C11 mode 在 for 循环里声明变量只允许在 C99 或 C11 模式, 需要在工具(Tools)/ 编译选项(complier option)/代码生成下的语言标准选择C99。

    3.3K10编辑于 2021-12-07
  • 【安全函数】memchr_s ():C11 安全内存查找的新范式与 memchr 深度对比

    C11 标准引入的 memchr_s () 函数,在保留核心查找功能的基础上,构建了全面的安全防护机制,重新定义了内存查找的安全标准。 一、函数简介 memchr_s () 是 C11 标准(ISO/IEC 9899:2011)定义的边界检查接口(Bounds-checking interfaces)家族成员,专为解决 memchr ( 如空指针访问可能崩溃) 明确的错误码定义,可通过 errno 获取详情 查找范围 仅由 n 参数控制,无上限检查 受 maxsize 参数和 RSIZE_MAX 双重限制 标准兼容性 C89 及以上 C11 放弃了 memchr () 的指针返回方式,采用 errno_t 类型返回错误码,这是安全机制的关键体现: 0(成功):查找完成(无论是否找到目标字节) 非 0(失败):发生错误,具体值对应不同错误类型 C11 兼容性策略:在不支持 C11 的环境中,应实现兼容的安全封装函数,模拟 memchr_s () 的安全特性 4.

    10610编辑于 2026-01-21
  • 来自专栏量子位

    Linux之父终于被劝动:用了30年的Linux内核C语言将升级至C11

    今天,Linux开源社区宣布,未来会把内核C语言版本升级到C11,预计5.18版之后生效,也就是今年5月。 而另一位核心开发者Arnd Bergmann认为,咱们完全可以升级到C11甚至更高版本。但如果升级到C17或C2x,会破坏对gcc-5/6/7的支持,因此升级到C11更容易实现。 接下来迁移到C11可能会导致一些意想不到的bug,但如果一切顺利,下一个Linus内核版本将正式转向C11

    76330编辑于 2022-03-04
  • 来自专栏全栈程序员必看

    多线程C语言_多线程c++

    C11 标准原本,C 开发人员应当依赖操作系统或相应链接库来推动并行。C11 标准发布之后,使得 C 程序可方便地推动并行。C11 支持多线程执行(multithreaded execution)。 为此,C11 标准定义了一个相应的存储模型(memory model),并且支持原子操作(atomic operation)。 在 C11 标准下,对于多线程和原子操作的支持是可选的。 如果支持 C11 标准的推动版本定义了宏 _STDC_NO_THREADS_ 和 _STDC_NO_ATOMICS_,则表示该实现版本不支持多线程与原子操作。 如果使用过该扩展,你会看到 C11 线程编程的接口在这些方面与 POSIX 标准类似。

    2.9K20编辑于 2022-09-27
  • 来自专栏完美Excel

    Excel实战技巧93: 根据以往业绩分配销售任务

    可以使用SUMIFS函数求得N区域且状态为OPEN的商店销售总和: =SUMIFS(E11:E24,C11:C24,C11,D11:D24,D11) 因此,商店1的销售比例为: 100/600=16.67% 在工作表中使用公式为: =E11/ SUMIFS(E11:E24,C11:C24,C11,D11:D24,D11) 接着,使用INDEX/MATCH函数组合来从工作表上方的表中获取满足条件的数值,此处为 公式为: =INDEX(C4:D7,MATCH(D11,B4:B7,0),MATCH(C11,C3:D3,0)) 此时,就可以使用公式进行数量分配了,即分配的销售量: =待分配的销售量*实际销售量/总销售量 在工作表中的公式为: =INDEX(C4:D7,MATCH(D11,B4:B7,0),MATCH(C11,C3:D3,0))*E11/SUMIFS(E11:E24,C11:C24,C11,D11:D24

    2.7K30发布于 2020-11-24
  • 来自专栏完美Excel

    使用FILTER函数筛选满足多个条件的数据

    图1 可以使用公式: =FILTER(A2:D11,(A2:A11=G1)*(C2:C11=G2)) 公式中,两个条件相乘表示两者都要满足。结果如下图2所示。 图2 如果我们想要获取芒果和葡萄的所有数据,则使用公式: =FILTER(A2:D11,(C2:C11="芒果")+(C2:C11="葡萄")) 将两个条件相加,表示两者满足之一即可。 例如,想要获取白鹤公司芒果和葡萄的所有数据,则使用公式: =FILTER(A2:D11,((C2:C11="芒果")+(C2:C11="葡萄"))*(A2:A11="白鹤"))

    8.4K20编辑于 2023-09-15
  • 蓝桥杯Dev-C++ 5.11(编译器)使用细节排坑!!!

    当初为了备战pat考试,专门下载了DEV C++,然后懵圈的发现,怎么无法调试(╯°□°)╯︵ ┻━┻ 后来参加蓝桥杯时,发现我的Dev不支持 C++11/C11。 我才后知后觉) 蓝桥杯现场竞赛时,也不支持调试与未开启C++11,需要咱们自己手动设置) 所以咱们就从两点讲起: Dev C++ 5.11 调试初始设置 如何开启对C++11/C11的支持 -> Dev 第一步 (新建项目) 第二步 (左侧项目管理下,在“项目1“右键单击选择”项目属性“) 第三步 进行如图设置 第四步 工具>>编译选项>>,进行下图设置 -> 开启C++11/C11 <- 两步走: (编译选项 2、点击general,在画横线位置打对勾 C++ 输入 -std=c++11 C 输入 -std=c11 点击对勾就OK喽 大功告成( •̀ ω •́ )✧,大家开心使用!!!

    89210编辑于 2025-10-22
  • 【安全函数】C11 安全字符串比较:strcmp_s 与 strncmp_s 的防护机制与实战指南

    C11 标准(ISO/IEC 9899:2011)引入的边界检查接口(Bounds Checking Interfaces)为这一问题提供了系统性解决方案,其中strcmp_s()和strncmp_s( 在 C11 标准之前,strcmp()和strncmp()的主要问题集中在:缺乏对NULL指针的检查、不验证字符串长度合理性、返回值易被误用等。 返回错误码,触发约束处理 返回值 比较结果(整数) 错误码(errno_t)+ 比较结果(通过输出参数) 长度控制 strncmp 有 n 参数 均需提供字符串最大长度参数 标准支持 C89 及以上 C11 及以上(可选特性) 安全性 低(易越界) 高(全面边界检查) 二、函数原型 C11 标准对安全字符串函数的原型进行了重构,引入新的参数和返回值类型以实现安全目标。 以下伪代码基于 C11 标准描述,还原了函数的核心执行流程。

    13110编辑于 2026-01-22
  • 来自专栏波波烤鸭

    分享一个最新的java笔试题

    public static boolean isConvert(String A,String B,int index){ // 字符串转换为字符数组 char[] c11 B.toCharArray(); // 获取要替换的字符 char m = c21[index]; // 获取被替换的字符 char f = c11 // 遍历原字符数组 for(int i = 0 ; i < c11.length;i++){ // 如果是和需要替换的字符相同 if(c11 [i]==f){ c11[i] = m; } } // 字符数组转换为String类型 A = arrayToString (c11); B = arrayToString(c21); // 判断是否到了最后一位 if((index == A.length()-1) ){

    66330发布于 2019-05-21
  • 来自专栏完美Excel

    如何使用SUMIFS函数

    图1 使用SUMIFS函数很容易求得,在单元格D11中的公式为: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11) 单元格D12中的公式为: =SUMIFS(D3:D8,B3:B8, : =SUMIFS(C3:C8,B3:B8,B11) 图3 示例3:多条件求和 如下图4所示,对编号不为104且尺寸为“小”的价格求和: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11 ) 图4 示例4:部分匹配求和 在单元格D11中,对列B中以“B”开头且列C中尺寸为“小”的价格求和: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11) 图5 可以使用通配符: 示例5:使用逻辑运算符 单元格D11中的公式求编号小于104且尺寸为“小”的价格之和: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11) 单元格D12中的公式求编号大于等于103且尺寸为 “中”的价格之和: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11) 图6 可以使用的逻辑运算符有: 1.

    3.2K20编辑于 2022-03-04
  • 来自专栏CSDN搜“看,未来”

    133: error: in C++98 XXX must be initialized by constructor, not by '{...}'

    这样的问题就是你的编译器是否支持C11标准的问题。 C11相对与C98加了不少东西,比如容器的初始化等,如果用C98标准初始化容器,那真的是很爽的。 然后如果是用QT的话,首先你的编译器要支持C11,用Qt5,然后在pro文件里面加上这一行:CONFIG += c++11 (Qt5)

    1.7K10发布于 2020-08-26
  • 来自专栏完美Excel

    Excel公式练习:求三列数值之和等于指定值的组合数

    =COUNT(1/MMULT(N(SMALL(B2:B11+TRANSPOSE(C2:C11),COLUMN(A:CV))+A2:A11=20),ROW(1:100))) 公式中: B2:B11+TRANSPOSE (C2:C11) 会得到由列B中的数值与列C中的数值相加的所有结果。 =COUNT(IF(MATCH(20-A2:A11,SMALL(B2:B11+TRANSPOSE(C2:C11),ROW(A1:A100)),0),A2:A11,"")) 或 =COUNT(MATCH( 20-A2:A11,SMALL(B2:B11+TRANSPOSE(C2:C11),ROW(A1:A100)))) =COUNT(IF(MATCH(20-A2:A11,SMALL(B2:B11+TRANSPOSE (C2:C11),ROW(A1:A100)),0),A2:A11,"")) 大家可以使用F9键或者公式求值功能自行解析,以理解公式的运作原理,从而更好地理解公式和所使用的函数。

    2.4K50编辑于 2022-11-16
  • 【安全函数】C11 安全格式化函数解析:sprintf_s 与 snprintf_s 的设计、用法与兼容性

    2.1 sprintf_s 原型(C11 标准 + MSVC/GCC 差异) 标准原型(C11 Annex K): int sprintf_s(char *restrict dest, rsize_t 2.2 snprintf_s 原型(C11 标准 + 实现差异) 标准原型(C11 Annex K): int snprintf_s(char *restrict dest, rsize_t destsz (不含\0)”;若缓冲区不足,返回 “-1”(与标准差异极大,需特别注意); GCC:接近 C11 标准,截断时返回总需长度,失败返回 - 1。 以下伪代码基于 C11 标准,兼顾 MSVC/GCC 的共性逻辑。 面试题 3:C11 的 snprintf_s 与传统 snprintf 在截断处理和错误处理上有何差异?

    21210编辑于 2026-01-22
  • 【安全函数】fread_s与fwrite_s的二进制文件安全读写

    C11兼容性配置: GCC:需开启-std=c11和-fbound-check编译选项(部分版本需链接-lstdc++); MSVC:默认支持(VS2015及以上),无需额外配置; Clang :需开启-std=c11,部分安全特性需-fsanitize=safe-stack增强检查。 原因:编译器未开启C11标准,或不支持C11安全函数。 解决方案: GCC/Clang:编译命令添加-std=c11 -fbound-check,部分版本需链接-lstdc++; MSVC:VS2015及以上默认支持,若仍报错,在项目属性中开启“C11标准支持 面试题2:C11中_s安全函数的“约束处理机制”是什么?如何自定义约束处理函数?(英特尔2023年系统编程面试题) 答案: 1.

    11110编辑于 2026-01-22
领券