GNU C 与 ANSI C(下)】的更多相关文章

转载自点击打开链接 GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的.它的目标是创建一套完全自由的操作系统.它在编写linux的时候自己制作了一个标准成为 GNU C标准.ANSI 美国国家标准协会,它对C做的标准ANSI C标准后来被国际标准协会接收成为 标准C 所以 ANSI C 和标准C是一个概念 总体来说现在linux也支持标准C,以后标准C可以跨平台,而GUN c 一般只在linux c下应用 18.1 ANSI C和标准C++的差别 这里…
没有注意到文件编码的不同会产生这么多的问题,在动手以前查询了很多资料,在本博客中收藏了不少先辈的成果,在这里一并表示致敬!       关于ANSI和Unicode编码的原理在这里也不说了,主要讲下如何读写!       首先确定你的工程是采用的是什么编码环境,默认是ANSI,不同的字符集读写文件的差别也比较大,我这里只在ANSI环境下做的,下一步在探索在Unicode环境下如何读写!(原先这个没搞懂,读了不少代码发现自己试验都是有误的).       在ANSI的字符集下,CString等都是…
1. 语句表达式 GNU C 把包含在括号中的复合语句看做是一个表达式,称作语句表达式,它可以出现在任何允许表达式的地方.我们可以在语句表达式中使用原本只能在复合语句中使用的循环.局部变量等,例如: #define min_t(type, x, y) \ ({ type _x = (x); type _y = (y); _x < _y ? _x : _y; }) int ia, ib, mini; float fa, fb, minf; mini = min_t(int, ia, ib); mi…
1.零长度数组 GNU C允许使用零长度数组,定义变长度对象时比较方便 struct var_data { int len; char data[0]; }; var_data的大小仅为一个int型,data是常量地址,data[index]是访问其后的内存空间. struct var_data *s = malloc(sizeof(var_data) + len); 释放内存的时候free(s)只释放int,所以还要认为地释放data空间,这会带来不便.另外只有GNU C支持,c/c++编译永…
Linux 上可用的 C 编译器是 GNU C 编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布.GNU C 是对标准 C 进行的一系列扩展,以增强标准 C 的功能. 1. 零长度和变量长度数组 GNU C 允许使用零长度数组,在定义变长对象的头结构时,这个特性非常有用.例如: struct var_data { int len; char data[0]; }; char data[0] 仅仅意味着程序中通过 var_data 结构体实例的 data[index] 成员可以…
引用:http://tsroad.lofter.com/post/376316_57ac519 1.GNU C可定义0长度数组,目的是为了定义可变长结构体. struct var_struct{   int len;   char data[0];}; 把此结构体的数据紧接着放后面,就可以用data[index]来访问了. 2.case可以范围匹配,case x...y switch(n){   case 0...9 c=1;break;   case 10...11 c=2;break;   …
C11 (GNU Dialect) -std=gnu11 和 -std=c11 C11 (GNU Dialect) -std=gnu11 和 -std=c11 用于 IntelliSense 的 C 语言标准的版本.注意: GNU 标准仅用于查询设置编译器以获取 GNU 定义,并且 IntelliSense 将模拟等效的 C 标准版本. 标准 C 可以跨平台,而 GNU C 一般只在 Linux 下应用. Reference The GNU C Library和The Standard C Li…
以Fruit和Apple为例进行分析: Fruit和Apple的定义如下: 通过在两种编译环境下的测试(GNU GCC & VS2015),可以发现这两种编译器的对象模型是一样的,如下图所示: Apple是Fruit的子类,此为两级的单链继承结构.在Apple和Fruit对象内部,均遵循以下原则: 对象中的第一个成员是指向虚表的虚指针: 对象是按照声明中的顺序被保存的: 然而,两种编译器的内存的位对齐方式略有不同. 对于GNU GCC编译器而言,其遵循以下的原则: 按声明中出现的顺序进行内存分配…
说来真是惭愧呀.一直在用VIM 做开发.却不知道VI 里还有这么好使的工具.以前一直都是用: find -type f -print | xargs grep -i **** 在源代码里查找. 原来Linux下也有类似于Souce Insight工具.以下是引用人家的文章.http://blog.chinaunix.net/u1/56619/showart_1822993.html linux源代码分析和阅读工具比较 Windows下的源码阅读工具Souce Insight 凭 借着其易用性和多…
Q UNICODE字符串如何显示 A 如果程序定义了_UNICODE宏直接用 WCHAR *str=L"unicodestring"; TextOut(0,0,str); 否则就需要转换类型 #include <comdef.h> WCHAR *str=L"unicodestring"; bstr_t str1=str; TextOut(0,0,(char*)str1); Q 如何实现ANSI和UNICODE的相互转换 A 将ANSI转换到Unicode…