gcc 遇到过的语法问题】的更多相关文章

如果定义一个这样的宏: #define MAX(a,b) ((a)>(b)?(a):(b)) int main(void){ int a=5,b=10; MAX(a++,b++); printf("%d,%d\n",a,b); return 0; } 这时,返回值为6,12,b进行了2次自加.这样的问题,标准c没有一个完美的解决办法. gcc却有一个办法. 这样定义: #define MAX(a,b) ({int A=(a),B=(b);A>B?A:B;}) gcc里的de…
1.在ubuntu 12.04 环境下,在/etc/ld.so.conf.d/目录里添加某个so库的配置路径,比如 /home/myself/abc/lib/ 执行 sudo ldconfig…
1.1 Linux 内核驱动中的奇怪语法 大家在看一些 GNU 开源软件,或者阅读 Linux 内核.驱动源码时会发现,在 Linux 内核源码中,有大量的 C 程序看起来“怪怪的”.说它是C语言吧,貌似又跟教材中的写法不太一样:说它不是 C 语言呢,但是这些程序确确实实是在一个 C 文件中.此时,你肯定怀疑你看到的是一个“假的 C 语言”! 比如,下面的宏定义: #define mult_frac(x, numer, denom)( \ { \ typeof(x) quot = (x) / (…
1. 强符号和弱符号 1.1 u-boot和kernel中的__weak指令 u-boot和kernel比较普遍地使用了__weak来定义函数. 在include\linux\compiler-gcc.h中__weak是这样定义的: #define __weak __attribute__((weak)) 1 GCC通过__attribute__((weak))指令定义的函数或变量称为弱符号(Weak Symbol),实际上这个指令大部分时候都是用来定义函数,很少用于定义变量. 编译器默认函数和…
前言 编译器的主要工作流程: 源码(Source Code)>> 预处理器(Preprocessor)>> 编译器(Compiler)>> 汇编程序(Assembler)>> 目标代码(Target Code)>> 链接器(Linker)>> 可执行程序(Executables) GCC,全称 GNU Compiler Collection,是 GNU 编译器套装,最开始编译 C 语言,后来可以处理 C++ 以及 Fortran, J…
转自http://blog.csdn.net/pbymw8iwm/article/details/8153226 符号属性 长度属性 基本型 所占 位数 取值范围 输入符举例 输出符举例 -- -- char 8 -2^7 ~ 2^7-1 %c %c.%d.%u signed -- char 8 -2^7 ~ 2^7-1 %c %c.%d.%u unsigned -- char 8 0 ~ 2^8-1 %c %c.%d.%u [signed] short [int] 16 -2^15 ~ 2^1…
在上一篇文章中,我们说到,C 语言系统应该由程序开发环境,C 语言本身和 C 语言的库组成.且同时说了程序开发环境做了“编写”,“预处理”,“编译”和“链接”这几件事情.但是细节并没有一一呈现.不知道同学们是否想过,这里都经历了一些什么呢?! 在这一篇文章中,我们就来看看“上帝说,要有光,就有了光.”是怎么实现的.假设你是上帝,想要实现“给我输出 'HELLO,WORLD!'”.同学们使用的 IDE 是 C-Free 5,这里的所有操作,都以此编译器为例.假设编译器安装路径为“C:\Progra…
from:http://www.cnblogs.com/A123456A/archive/2013/01/25/2876634.html char,short ,int ,long,long long,unsigned long long数据范围   速查表: char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +214748364…
正文: 在编程中,无论是OC还是C亦或是C++语言,所声明的整数变量都会在内存中占有固定的存储空间,而这些存储空间都是固定的. 比如我们知道的int.long.short.unsigend int.unsigend long.unsigend long long等等,都有固定的存储空间,而哪怕是64位系统下的变量unsigend long long,能存储的最大范围只有. 下边复习一下基础类型的存储范围以及所占字节: 编程语言的基础类型速查表 char -128 ~ +127 (1 Byte)s…
问题一.执行脚本.提示出错,错误有"cann't exec aclocal" ,错误提示最多的是关于aclocal的问题,查资料显示这个文件是automake必备一个文件,好吧,那就安装,但是apt-get无法找到此文件,原来他是automake的一个组件,但是我apt-get install automake安装了automake了,为什么没有aclocal,重新安装automake也是如此.      解决方法:请下载automake,手动安装,自动安装不知为何总是没有acloca…
1.1   GAMIT/GLOBK软件可从网络上申请下载.该软件功能强大,用途广泛,一般包括精确定位,大气层可降水汽估计和空间电离层变化分析等.后两种用途只需要用到GAMIT模块,精确定位则还需要GLOBK模块. 1.2    注意:如果你的目标是得到ITRF下的精确测站坐标,为了达到在GLOBK模块中进行坐标转换的目标,需要引入已知ITRF坐标的站点联合解算.即在gamit模块中将周围稳定的,均匀分布的3个或者以上IGS站点引入.如果不注意这点你将前功尽弃!!!! 1.3    在求解坐标的时…
转自:http://blog.csdn.net/fivedoumi/article/details/7077504 d,lx,ld,,lu,这几个都是输出32位的 hd,hx,hu,这几个都是输出16位数据的, hhd,hhx,hhu,这几个都是输出8位的, lld,ll,llu,llx,这几个都是输出64位的, printf( "%llu ",.....) %llu   是64位无符号 %llx才是64位16进制数   Dev-C++下基本数据类型学习小结 环境: Dev-C++ 4…
速查表: char -128 ~ +127 1Byte -2^7 ~ 2^7-1 unsigned char 0 ~ 255 1Byte 0 ~ 2^8-1 short -32767 ~ + 32768 2 Bytes  -2^15 ~ 2^15-1 unsigned short 0 ~ 65536 2 Bytes  0 ~ 2^16-1 int/long -2147483648 ~ +2147483647 4 Bytes  -2^31 ~ 2^31-1 unsigned int/long 0…
Linux操作系统的种种集成开发环境 随着Linux的逐渐兴起,已经有为数众多的程序在上面驰骋了,许多开发环境(Development Environment)也应运而生.好的开发环境一定是集成了编辑.编译和调试等多项功能并且易于使用.本文介绍了一些在Linux上流行的开发环境. C-Forge C-Forge(即Code Forge——代码制造)是多用户集成开发环境,它提供了完全的工程管理和彻底的编辑.编译.调试循环支持.也许你熟悉Windows下的集成开发环境,它们也非常易用,但略显华丽,是…
Linux操作系统的种种集成开发环境 随着Linux的逐渐兴起,已经有为数众多的程序在上面驰骋了,许多开发环境(Development Environment)也应运而生.好的开发环境一定是集成了编辑.编译和调试等多项功能并且易于使用.本文介绍了一些在Linux上流行的开发环境. C-Forge C-Forge(即Code Forge——代码制造)是多用户集成开发环境,它提供了完全的工程管理和彻底的编辑.编译.调试循环支持.也许你熟悉Windows下的集成开发环境,它们也非常易用,但略显华丽,是…
在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++.C++是一门通用编程语言,支持多种编程范式,包括过程式.面向对象(object-oriented programming, OP).泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(templa…
转自:http://blog.csdn.net/electrombile/article/details/51289813 在 x86 平台上,spinlock 主要通过处理器的 lock 指令前缀实现当某个线程的一条指令访问某个内存的时候,其他的线程的指令无法访问该内存的功能.(可见都是由处理器特性来保证!) 因此在 spinlock 初始化阶段,将锁变量中的值某个值 k 赋为1.在加锁的时候,使用 lock decl (%eax) 指令互斥地将该变量变成0,并且将结果是否问0 赋值给 EFL…
原文:http://hi.baidu.com/magicdemon/blog/item/821b2e22d7df494cad34debd.html C++下基本类型所占位数和取值范围: 符号属性      长度属性      基本型      所占位数      取值范围   输入符举例       输出符举例 --                    --           char          8          -2^7 ~ 2^7-1    %c         %c.%d.…
技术 对于我来说 是我前进的动力 虽然有时候感觉会枯燥乏味 不过没关系 放松一下紧张的心态 做一些你能够是你进步的事情  这样 你才会觉得  每天都过得很充实  学海无涯  坚持追求你所想要实现的梦想  终归有一天  你会等到…… 那么  今天看到了  printf 的一些知识  感觉挺好  下面 我就来吐槽一下 : <该博文以下内容的 测试平台及环境 win  64bit  VS2012> http://www.cnblogs.com/hnrainll/archive/2011/08/05/…
致谢: 微信公众号:嵌入式企鹅圈 每天都新增爱好者关注,感谢大家的支持和大牛们的建议. 本人将竭力出品很多其它优质的原创文章回馈大家的厚爱. 引子:模块化机制长处 模块化机制(module)是Linux系统的一大创新.是Linux驱动开发和执行的基础(当然,module并不不过支撑驱动). 其长处在于: 1.在系统执行动态载入模块.扩充内核的功能. 不须要时能够卸载. 2. 改动内核功能,不必又一次所有编译整改内核,仅仅须要编译对应模块就可以. 3.模块目标代码一旦被载入重定位到内核,其作用域和…
[转]C++强大背后 2014-01-22 分类:互联网 阅读(9295) 评论(6) 在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++.C++是一门通用编程语言,支持多种编程范式,包括过程式.面向对象(object-oriented programming, OP).泛型(generic programming, GP),后来为泛型…
d,lx,ld,,lu,这几个都是输出32位的hd,hx,hu,这几个都是输出16位数据的,hhd,hhx,hhu,这几个都是输出8位的,lld,ll,llu,llx,这几个都是输出64位的, printf( "%llu ",.....)%llu   是64位无符号%llx才是64位16进制数 Dev-C++下基本数据类型学习小结 环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项 基本类型包括字节型(char).整型(int)和浮点型(flo…
1.1 C预处理 常见错误 预处理错误 #include "" 和 <> 使用错误 "No such....." 更改“” 或者<> 或指定 gcc -I 编译错误 语法错误 : { } 中英文标点 没有声明定义 链接错误 原材料不够 collect错误 寻找标签是否实现了,链接时是否一起链接 如 undefined reference to “fun” 加函数等定义 加外部.c文件定义 常见工程 原材料多了 多次实现标签,只保留一个标签实现…
转自MiloYip大神的博客 [原文]http://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html 在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++.C++是一门通用编程语言,支持多种编程范式,包括过程式.面向对象(object-oriented pro…
http://blog.csdn.net/u014795020/article/details/72514109 前言 今天在Swift工程中不小心创建了一个OC文件,于是乎提示我创建一个桥接文件,那么为什么需要创建桥接文件呢,它的原理又是什么呢? 打开百度一搜,全是教你怎么创建桥接文件的,似乎找不到答案~ LVVM - Low Level Virtual Machine Clang - C Lange Family Frontend for LVVM 编译器探究 GCC GNU编译器套件(GN…
Golang有很多优点: 开发高效:(C语言写一个hash查找很麻烦,但是go很简单) 运行高效:(Python的hash查找好写,但比Python高效很多) 很少的系统库依赖:(环境依赖少,一般不依赖各种LibPath等) 简单可依赖:(静态类型,不怕Python的动态类型防不胜防的坑:unused import会报错,减少不必要的import:) 可以直接嵌C,也可以编译成so供C/C++调用:(搞不定的坑都可以让C来填:高效的部分golang刷刷刷) 开发高效 VS 运行高效 一般情况下,…
用过`C++/Java/python/matlab/JS`等语言后,发现都能很轻松的使用string类型,而C只能这样: char str[] = "hello world"; or const char* str = "hello world"; 如果只是一个string的类型的话,可以简单的自定义一个: typedef const char* string; 但这样的写法并不便利,且这种用法不能修改变量中的数据,于是想写一个类似C++中的string类,但写了一…
转载地址:http://hi.baidu.com/thewillreigns/blog/item/67e665c4296e69c038db492d.html char 和 unsigned char是无符号的 两者都作为字符用的话是没有区别的,但当整数用时有区别:  char 整数范围为-128到127( 0x80__0x7F),  而unsigned char 整数范围为0到255( 0__0xFF ) 多数情况下,char ,signed char .unsigned char 类型的数据具…
简单的GCC语法: 如果你只有一个文件(或者只有几个文件),那么就可以不写Makefile文件(当然有Makefile更加方便),用gcc直接编译就行了.在这里我们只介绍几个我经常用的几个参数,第一是 “-o”,它后面的参数表示要输出的目标文件,再一个是 “-c”,表示仅编译(Compile),不连接(Make),如果没有”-c”参数,那么就表示连接,如下面的几个命令: gcc –c test.c,表示只编译test.c文件,成功时输出目标文件test.o gcc –c test.c –o te…
__attribute__实际上是gcc专有的一种语法,是用来设置函数属性.变量属性.类属性的 语法:之前在C中的结构体对齐中提到过,当时是用来告诉编译器这个结构体的对齐方式 ,其实他还有很多种用法,可以设置很多的属性.语法: __attribute__ (parameter)对于变量: int a __attribute__ ((xxxxx)) = 10; //也可以放在变量的前面,比较灵活 int a __attribute__ ((xxxxx)); // 也可以放在变量的前面,比较灵活对于…