C语言和编译链接器
文章平均质量分 61
C语言特性相关,编译器和链接器相关内容
子朔不言
物联网,智能设备,智能识别,下一波产业浪潮。深圳市新龙微科技有限责任公司,致力于物联网,智能家居,智慧中控,智能制造,智能控制等设备软硬件研发,提供全方位技术和产品服务.某宝收店铺新龙微有相关产品展示
展开
-
C89、C99和C11标准之间的差异
收集了大部分差异特性,不断完善和补充,有遗漏的地方欢迎留言补正。一、C99针对C89的改变1.增加了restrict指针通过restrict修饰指针,可以确保两个指针不能指向同样的内存空间。如memcpy函数在C99标准下的定义为void *memcpy(void *restrict s1, const void *restrict s2,size_t size);12.增加inline关键字和C++一样,通过inline函数可以创建内联函数,提高代码的编译效率和执行效率。3.新的数据类型原创 2022-01-24 14:12:33 · 4232 阅读 · 0 评论 -
指针详解系列4-指针与数组
数组名实际上就是第一个元素的地址,一维数组名的值是一个指针常量。如果数组a是一个一维数组,那么第一个元素的地址就有两种表示方法:a或者&a[0].第二个元素也有两种表示方法:(a+1)或者&a[1],所以数组元素a[i]的地址既可以表示为&a[i]又可以表示为(a+i)(回顾一下指针的运算)。a[i]和*(a+i)都可以访问数组元素。如果定义了一个指针ptr,并让它指...原创 2020-04-19 22:15:55 · 483 阅读 · 0 评论 -
指针详解系列3-指针运算
指针的运算可能是属于难点之一。指针属于整数类型,但是并不是所有属于整数类型的运算都适用于指针类型,反之亦然。比如,对指针就不能进行乘除法运算,两个指针对象值也不能相加。指针运算后的整数类型长度,取决于当前系统指针实现的长度,可以是32bit,也可以64bit等等。可以被支持的运算符包括:&,*,+,-,++,–,>,<,>=,<=,==,->&...原创 2020-04-19 22:13:37 · 646 阅读 · 0 评论 -
指针详解系列2-常量指针与指针常量
这一章我们详解一下指针的一个修饰符—const。Const修饰符的不同位置,表示的不同的作用,定义如下:char * const Ptr_ConstChar = “a”; const char * pConstChar_Ptr; const char * const pConstChar_ConstPtr = “ab”; 如何识别和记住这些差异,关键点就看const的位置,记住一点,......原创 2020-04-18 00:25:12 · 183 阅读 · 0 评论 -
指针详解系列1-指针的定义
指针的描述(以下的所有地方都基于C89标准):指针与数组,结构,联合等一样也是一种数据对象,其值是另外一个对象的地址(这是重点,指针变量里面保存的内容是另外一个对象的地址)。“指针”得名于这样的事实:其内容“指向”另外一个对象。指针可以指向任何类型(完整类型的或者不完整类型)的对象。一个指针还可以指向其他指针(也就是指向指针的指针),可以实现“多重间接寻址”。更为重要的是指针还可以指向一个函数......原创 2020-04-18 00:18:18 · 975 阅读 · 0 评论 -
[ARM-2D 专题]3. ##运算符
##运算符,也叫连接运算符(也称胶水运算符),预处理程序把出现在##两侧的参数合并成一个符号,通常用于宏参数的连接。原创 2024-06-17 22:22:49 · 445 阅读 · 0 评论 -
[ARM-2D 专题] 2. 逗号表达式
逗号表达式,是c语言中的逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。要注意逗号运算符和函数参数分隔符(也是一个逗号)的区别。(表达式1,表达式2,表达式3,…(3) 逗号运算符的优先级别在所有运算符中最低。(1) 逗号表达式的运算过程为:从左往右。万丈高楼平地起,基础非常重要。原创 2024-06-17 21:04:08 · 224 阅读 · 0 评论 -
C语言编程标准头文件格式推荐及其含义解释(#ifndef,#define,extern “C“,#endif)
而C语言没有类似的重载机制,一般是利用函数名来指明编译后的函数名的,对应上面的函数可能会是_foo这样的名字.所以如果你在c语言文件中调用一个c++文件中申明的foo函数,就会找不到这个符号。一个头文件可能会被多个其他头文件包含或者源文件包含进行应用,c语言的引用(include “xx.h”)在编译的时候是以复制方式进行展开,也就是说如果你在a文件包含了b,c文件(无论是源文件还是头文件),那么编译a文件的时候,它会先把b.c文件的内容放到a文件一起展开形成一个文件,然后再进行编译。原创 2023-02-01 18:00:17 · 3209 阅读 · 0 评论 -
C语言规范标准-C99(中文版) 完整版正式发布
但是作为使用C语言进行开发的程序员来说,毋容置疑的是这个标准文档的重要性是非常的高,如果能用母语去进行初次阅读,我相信就没有那么容易放弃了,这也是我的一个最初的初衷。文档翻译可能不一定完全准确,但是基本上没有大的错误,能够作为入门级的参考,如需进一步学习,可以参考英文原版。如果你在阅读过程中,发现有翻译错误和需要完善的地方,也希望你能反馈信息给我,我们进行修正和改进。原创 2022-09-06 15:04:03 · 5510 阅读 · 5 评论 -
数据颠倒的C语言实现
一些地方常用到要颠倒数据的情况,下面分别正对8,16,32的数据进行处理。//把字节颠倒过来,如0x32变成0x4C// 0x32: 0011 0010// 0x4C: 0100 1100uint8_t InvertUint8(uint8_t in){ uint32_t i; uint8_t tmp = 0; for(i=0; i< 8; i++) { if(in & (1 << i)) tmp |= 1 << (7 - i);原创 2022-04-05 16:49:20 · 2059 阅读 · 0 评论 -
2021年1月 编程语言排行榜
C语言依然是王者!编程语言排行榜 TOP 20 榜单:21-50 编程语言排名:原创 2021-05-24 09:15:05 · 220 阅读 · 0 评论 -
推荐三本此生必读的C语言经典
“ 原创文章,欢迎分享,转载请注明来源,并给出原始链接,未经书面允许,请勿用于商业用途。”推荐三本必读的C语言经典著作。没有读过和深入理解这几本书的精髓,你千万不要说精通C语言,否则会脸红的。第一本:《C和指针》第一眼是不是以为这是讲解指针的书?不要这么认为,这本书对C语言进行了全方位的讲解,其深度和细度远非那些21天学会C编程之类的骗子书可比的。有了这本书,你可以扔掉它们了。第二本:《...原创 2020-03-12 10:37:16 · 837 阅读 · 0 评论 -
C语言头文件定义技巧以及注意事项
在<KEIL编译器预处理器和预定义宏(include,ifdef,def等)>一篇中我们详细的介绍了C语言开发过程中经常使用到的一些宏名称及其意义,并且简单展示了其作用。在一个大的项目开发过程中,我们的源文件,头文件一般都会按照模块划分,形成多个文件。同时,各种宏定义,变量定义,函数定义等就会相当的多,这样一来,在我们引用一个定义的时候,就要去包含非常多的头文件进来。在一个C文件前面...原创 2020-03-10 23:39:15 · 2769 阅读 · 0 评论 -
KEIL编译器预处理器和预定义宏(include,ifdef,def等)
Keil使用的C编译器支持常用的编译器预定义宏和对文件进行预处理。在设置界面打开预处理器选项,就可以输出每一个文件对应的预处理文件。当然,你不选择这个选项,编译器也会默认启用预处理编译的,只不过不会对应每一个C文件生成这个预处理结果文件而已。首先,我们了解一下何为预定义宏和预处理器以及他们起什么作用预定义宏:ARM编译器预定义了很多宏,这些宏提供了工具链版本号和编译器选项的相关信息。预处...原创 2020-03-08 21:01:59 · 12078 阅读 · 0 评论 -
char定义解释
ANSI C 提供了3种字符类型,分别是char、signed char、unsigned charchar相当于signed char或者unsigned char,但是这取决于编译器!这三种字符类型都是按照1个字节存储的,可以保存256个不同的值。signed char取值范围是 -128 到 127unsigned char 取值范围是 0 到 255但是char究竟相当原创 2015-06-18 09:58:25 · 2103 阅读 · 0 评论 -
Cortex M在keil中的数据端结构及其应用
关于CPU的端结构的文章并不少见,我主要讲一讲在实际产品中的应用及其注意事项。下面的所以代码和实例基于Keil MDK5.26演示,CPU为STM32F103VCT6.一. 定义Little-Endian:小端就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。Big-Endian:大端就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。比如一个 int类型的...原创 2020-03-08 16:42:03 · 481 阅读 · 0 评论 -
C语言代码优化示例(二)
一. 起源在整理系统平台的代码时候,看到了一些原来同事编写的代码,有感于这些代码的编写方法和效率问题,挑出一段有代表意义的代码和大家分享如何改进代码的编码效率和提高代码的执行速率,同时降低代码对内存的消耗.二. 原始代码(下面简称代码A)void InintExchangeRateSet(void){double ExchangeRateTab[] = {...原创 2020-03-07 16:40:22 · 342 阅读 · 0 评论 -
C语言代码优化示例(一)
在实际产品的软件开发过程中,很多时候会对代码的性能提出要求,追求最快的速度,提高程序运行效率,改善用户体验等,此时此刻,对代码的优化就非常有必要了,掌握代码的优化方法和技巧就很有必要了。我们用下面的一段短小的代码为例,来看看优化的过程,并且简略分析一下起优化的原理。这段代码在CRC的校验中有机会用到,功能是将一个字节的数据逐位的颠倒反转。//功能: 将数据的位反转,即b0->b7,b...原创 2020-03-06 20:37:50 · 1438 阅读 · 0 评论 -
keil 仿真测量程序运行时间
优化代码以提高起运行效率,精确的测量某一段代码的运行时间。在keil里面提供了一个仿真调试手段,用来完成这个任务,好用!原创 2020-03-06 17:40:26 · 8575 阅读 · 5 评论 -
C语言标准演化历史
C语言的诞生:C语言和Unix的开发者是同一人,名字叫丹尼斯•里奇(Dennis MacAlistair Ritchie), 2011年10月12日(北京时间为10月13日)去世,享年70岁。1967年,26岁的丹尼斯•里奇进入贝尔实验室开发 Unix,并于 1969 年圣诞节前推出第一个试运行版本。这个时候的 Unix 是用汇编语言写的。为了提高通用性和开发效率,丹尼斯•里奇决定发明一种新的...原创 2020-03-03 17:18:16 · 2282 阅读 · 0 评论