随笔 - 997
文章 - 5
评论 - 181
阅读 -
300万
随笔分类 - C/C++ languare
备忘遇到的C语音基本问题
strcmp函数和memcmp函数的用法区别及联系
摘要:前言: C语言中有很多东西容易搞混,最近笔者就遇到了一个问题。这里做个记录。就是memcmp和strcmp两者的用法,这里做个对比: 功能对比: A memcmp: 函数原型: int memcmp(const void *str1, const void *str2, size_t n)); 功能
阅读全文
C语言中的神兽strdup
摘要:C语言的确博大精深,在C语言的世界中遨游了那么多年,发现自己仍是菜鸟一枚,很多利器没有能够驾驭,今天介绍一个神兽,威力无比,但是却很少人能用得好。 函数原型: 函数介绍: strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现。 strdup()在内部调用了mall
阅读全文
gcc链接,去掉不用的函数和data
摘要:编译代码的时候,没有用到的函数经常会被编译,该怎么才能去掉呢? 解决方法: CFLAGS 加上 -ffunction-sections -fdata-sections LDFLAGS 加上 --gc-sections 原理如下: -function-sections的意思是,将不同函数编译到不同的s
阅读全文
C语言ftell()函数
摘要:ftell()函数返回指定流的当前文件指针的位置。在文件末尾移动文件指针后,我们可以使用ftell()函数获取文件的总大小。可以使用SEEK_END常量来将文件指针移动文件末尾。 ftell()函数的语法: long int ftell(FILE *stream) 示例: 创建一个源文件:ftell
阅读全文
我所不知道的Makefile语法
摘要:问题一: $(CC) -c $^ -o $(ROOT_DIR)/$(OBJS_DIR)/$@ 这里的$^和$@是设么意思? 经过查找,该特殊符号的用法如下: 假如:all:library.cpp main.cpp 三个符号代表的含义如下? $@ evaluates to all $< evaluat
阅读全文
内联函数和宏定义的区别和联系
摘要:深入到计算机的本质,其实,很多东西还是细节需要深入分析的,比如我最近的一份工作 内联函数和宏很类似,都是以空间换时间,都能一定程度上加快程序的执行。而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以
阅读全文
C语言中指针中的值赋值给数组
摘要:如果把各种语言做个冷兵器类比的话,C语言一定是刀客的最佳工具.入门很简单,但是要是能把它熟练运用,那就是顶尖级别的高手了. 用了那么多年的C语言,发现自己还是仅仅处于熟练的操作工.今天遇到了一个bug,就是和指针的赋值有关系.请看代码: 各位看官,能否看到这个代码的问题吗? 其实,这段代码有个严重的
阅读全文
C语言中求最大最小值的库函数
摘要:最近在倒腾算法,遇到了求三个数中最小的那个运算,自己写了一个,发现还是大学水平,在网上发现了一个比较好的例子,这就记录下了。 运行结果:
阅读全文
C代码中矢量运算的几个例子
摘要:最近遇到了一个C语言中使用矢量运算的问题,栽了不少跟头,这里就做个总结,免得后面再犯类似错误. 该数据结构的定义如下所示: 基本的操作: 特殊的运算: 使用内敛函数的运算结果: 一个例子: 运算结果: 其实,详细的针对这个概念的解释请参考后面参考文档,我只是负责知道这个东西怎么用了. 参考文档: 1
阅读全文
C语言中关键字restrict的概念,使用范围,例子
摘要:概念: restrict,C语言中的一种类型限定符(Type Qualifiers),用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容。 渊源: restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的
阅读全文
C语言那年踩过的坑--局部变量,静态变量,全局变量在内存中存放的位置
摘要:先看几个概念: 1、bss是英文block started by symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。bss段属于静态内存分配。它的初始值也是由用户自己定义的连接定位文件所确定,用户应该将它定义在可读写的ram区内,源程序中使用mall
阅读全文
一个强制转换引发的血案及反思
摘要:首先看一个C语言的例子: #include <stdio.h> #include <string.h> #include <assert.h> typedef short uint16_t; typedef int uint32_t; void audio_mono2stereo_16bits(ui
阅读全文
C语言中assert()断言函数的概念及用法
摘要:断言函数的格式如下所示: void assert (int expression);如果参数expression等于零,一个错误消息将会写入到设备的标准错误集并且会调用abort函数,就会结束程序的执行。 断言的消息会显示库依赖,但是它也包含一下信息,源文件的名字,处于哪一行,在哪儿发生的,一般的格
阅读全文
C 语言restrict 关键字的概念及使用例子
摘要:restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代
阅读全文
SWIG 基本概念和入门
摘要:C 和 C++ 被公认为(理当如此)创建高性能代码的首选平台。对开发人员的一个常见要求是向脚本语言接口公开 C/C++ 代码,这正是 Simplified Wrapper and Interface Generator (SWIG) 的用武之地。SWIG 允许您向广泛的脚本语言公开 C/C++ 代码
阅读全文
”危险“的restrict与GCC的编译优化
摘要:restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的。Wikipedia给出的解释如下: In the C programming language, as of the C99 standard, restr
阅读全文
C语言数组一种巧妙的使用方式
摘要:作为计算机一种比较古老的语言,它并没有随着岁月老去,而是仍旧在整个领域发挥出耀眼的光芒,就像写作,有很多光芒万丈的句子值得我们去珍藏,今天就遇到了个比较巧妙的数组使用方法,做个记录,以供后续使用. 参考: 1 https://pastebin.com/FzYPtZ9j 2 https://githu
阅读全文
GCC的__attribute__ ((constructor))和__attribute__ ((destructor))
摘要:通过一个简单的例子介绍一下gcc的__attribute__ ((constructor))属性的作用。gcc允许为函数设置__attribute__ ((constructor))和__attribute__ ((destructor))两种属性,顾名思义,就是将被修饰的函数作为构造函数或析构函数
阅读全文
简单的ld链接脚本学习
摘要:一、 链接脚本的整体认识 什么是链接文件呢?作用是什么呢? 当编写了多个C文件时,我们将他们编译链接成一个可执行的文件,此时就需要用到链接脚本文件(ld)。ld脚本主要功能就是:将多个目标文件(.o)和库文件(.a)链接成一个可执行的文件。 链接脚本文件主要有什么内容呢? 为了规范,我们分为三个部分
阅读全文
C++ 排序函数 sort(),qsort()的用法
摘要:想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 要使用此函数只需用#include <algorithm> sort即可使用,语法描述为: sort(begin,end),表示一个范围
阅读全文