
C语言
文章平均质量分 64
桃李醉东风
真正的大师都有一颗学徒的心
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
‘xxx‘defined but not used [-Werror=unused-function] static修饰的函数未调用警告
static修饰的函数未调用警告1.问题2.解决1.问题static修饰函数不调用会‘xxx‘defined but not used [-Werror=unused-function]2.解决可在未使用的函数开头添加__attribute__((unused)) ,则可正常编译unused:This attribute, attached to a function, means that the function is meant to bepossibly unused. GCC wi原创 2022-05-10 19:46:32 · 6201 阅读 · 0 评论 -
system函数遇到的问题
system函数遇到的问题这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,就随手百了一下度,问题出现了,很多人都说system()函数要慎用要少用要能不用则不用,system()函数不稳定?下面是system函数百度的介绍:进程管理之system 详解system定义原创 2021-02-25 21:12:05 · 1723 阅读 · 0 评论 -
gcc编译及其选项详解、 Gcc的错误类型及对策(syntex errror、No such file or directory、Undefined symbol)
1.简介:gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的。这个东西功能强大,但是有多达上千个选项,其用户手册也有将近一万行.虽然其中的多数选项平时很少用到.但是不管装软件还是写程序,往往都会用到gcc.下面我就gcc最最常用的几个选项做一个简要的说明,如果你想对gcc有一个全面的了解,比如你想知道在其他非x86平台上gcc是如何工作的话,你可以用命令:man gcc;gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel原创 2020-12-24 10:53:10 · 2674 阅读 · 0 评论 -
动态库编译通过,调用动态库函数运行出现undefined symbol
编了一个动态库,写测试程序去调用动态库,程序编译通过,调用动态库里函数出错,通过加上动态库相关依赖库以及 extern“C”声明解决该错误以下,详细说明解决经过:首先,刚编译好的动态库需要配置好配置文件,测试编译为可执行程序时需要正确的链接动态库,在这些都没问题时,编译通过,运行时报undefined symbol错误时,往下看看,或许能给你解决1.现象分析:错误如图:这三个函数都是问题动态库里函数,程序调用动态库应该是通过程序的符号表去找到这个函数再去调用,出现undefined symbol错原创 2020-12-23 20:41:11 · 14344 阅读 · 4 评论 -
printf多列对齐(格式化输出的高级应用)
printf多列对齐(格式化输出的高级应用)1字符串对齐1.1列左对齐1.2. 右对齐2数字对齐1字符串对齐1.1列左对齐printf("%-*s", 20, string); 表示输出字符串左对齐输出20,如果字符串不够20个,以空格补齐。 -表示左对齐。例:struct help_struct{char *option_name;char *option_value;char *option_ext;};struct help_struct options[] ={{"set_原创 2020-12-03 10:37:13 · 10943 阅读 · 0 评论 -
一种指针数组的使用方法示例(从字符串数组中找到与给定字符串相同的)
#include <sys/stat.h>#include<stdio.h>#include<string.h>typedef int BOOL;typedef char UINT8;typedef unsigned char * PUINT8;#define TRUE 1#define FALSE 0static char const *names[]={"zhang","li", //index 1"zhao", //2NULL原创 2020-10-30 15:56:20 · 258 阅读 · 0 评论 -
数组指针与指针数组的理解
数组指针与指针数组的理解一数组指针与指针数组的定义1 数组指针(也称行指针)2 指针数组二、指针数组和数组指针的内存布局一数组指针与指针数组的定义1 数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组原创 2020-10-26 21:24:26 · 270 阅读 · 0 评论 -
C/C++程序内存的各种变量存储区域和各个区域详解
C语言在内存中一共分为如下几个区域,分别是:1. 内存栈区: 存放局部变量名;2. 内存堆区: 存放new或者malloc出来的对象;3. 常数区: 存放局部变量或者全局变量的值;4. 静态区: 用于存放全局变量或者静态变量;5. 代码区:二进制代码。知道如上一些内存分配机制,有助于我们理解指针的概念。C/C++不提供垃圾回收机制,因此需要对堆中的数据进行及时销毁,防止内存泄漏,使用free和delete销...转载 2020-10-26 11:25:42 · 1860 阅读 · 0 评论 -
assignment discards ‘const’ qualifier from pointer target type的解决
前段时间用C写一个求和子函数,但是出现assignment discards ‘const’ qualifier from pointer target type的警告。代码如下: #include <stdio.h> #define N 10 int sum_array(const int a[], int n) { int sum = 0; int* p; for(p = a;p...转载 2020-10-16 16:30:06 · 7535 阅读 · 0 评论 -
字符串常量存储总结
常量存储总结 局部变量、静态局部变量、全局变量、全局静态变量、字符串常量以及动态申请的内存区 1、局部变量存储在栈中 2、全局变量、静态变量(全局和局部静态变量)存储在静态存储区 3、new申请的内存是在堆中 4、字符串常量也是存储在静态存储区 补充说明: 1、栈中的变量内存会随着定义所在区间的结束自动释放;而对于堆,需要手动free,否则它就一直存在,直到程序结束; 2、对于静态存...转载 2020-10-16 16:25:13 · 2580 阅读 · 2 评论 -
sorry, unimplemented: non-trivial designated initializers not supported
将C语言转换为C++代码时,发生如下错误sorry, unimplemented: non-trivial designated initializers not supported。查找原因,是因为C++结构体初始化时,必须按照定义的顺序进行初始化,不能够跳过其中内容而初始化其他选项,或者定义的顺序先后有问题。...原创 2020-10-16 16:21:27 · 643 阅读 · 0 评论 -
C语言中struct初始化
标签:des class style log com http 使用 代码 si C语言中struct初始化• 普通结构体的初始化 &n...转载 2020-10-16 16:15:57 · 3429 阅读 · 0 评论 -
实现memcpy()函数及过程总结
1.为什么会写memcpy在之前的应聘笔试上遇到一道笔试题,题目要求实现一个my_memcpy函数。函数原型:void * my_memcpy(void *dst, const void *src, int n);之前使用的内存拷贝函数是标准库memcpy函数,拿来就用,真没有对这个函数做过多了解。在网上查了一下,有好多关于memcpy函数优化的文章。在实现过程中了解的越多,往往实现起来越麻烦。还是先实现简单的memcpy函数。2.按字节(Byte)拷贝实现的memcpy 1 void...转载 2020-10-16 15:57:51 · 4239 阅读 · 0 评论 -
浅析strlen与wsclen、printf与wprintf、%s与%ls
浅析strlen与wsclen、printf与wprintf、%s与%ls 分类: C语言 C++ 2011-12-20 14:28 strlen 函数原型如下: [cpp] view plain copy print ? size_t __cdecl strlen(const char *); size_t __cdec...转载 2020-09-26 21:50:46 · 772 阅读 · 0 评论 -
段错误(核心已转储)(core dumped)问题的分析方法
段错误(核心已转储)(core dumped)问题的分析方法1.段错误1.1段错误的含义1.2实际常见原因2.生成core文件2.1.使用命令 ulimit -a 查看core文件大小限制2.2使用 命令 ulimit -c 10240 (10240的位置可以是任意一个比较大的数字) 或者ulimit -c unlimited2.3 编译的时候一定要加入-g选项,要不然在最后显示错误的时候只会显示错的地址,而不会显示错误的具体信息2.4生成core的路径3.调试core1.段错误1.1段错误的含义原创 2020-09-23 22:04:21 · 46848 阅读 · 5 评论 -
嵌入式中常用的(a+b-1)&~(b-1)是啥意思?
这里写目录标题1.例子2.证明3.验证1.例子假设4位十进制数a = 7,b = 3 (0111 + 0011) & (~0011)= (1010)&(1100) = 1000得到的结果是8同样的(21 + 7)&(~7)= 24(010101 + 000111)&(111000) = (011100)&(111000) = (011000) = 24这个逻辑式子dao的作用由例子可以看出一点点8 是 4(b+1)的倍数中7的最小原创 2020-09-15 15:53:15 · 4558 阅读 · 2 评论 -
多种方法使用c语言读写文件(总结)
一:打开文件句柄//参数1:文件路径//参数2:文件打开模式函数执行成功返回文件流指针,错误返回NULL。FILE *fopen(const char *path, const char *mode); 模式 操作 &n...转载 2020-07-09 17:25:55 · 7811 阅读 · 0 评论 -
Source Insight教程
前言 转载请声明,转自【https://www.cnblogs.com/andy-songwei/p/9965714.html】,谢谢! “Source Insight(以下简称SI)是世界上最好的编辑器”,说这句话不知道会不会出门被打呢?-_- 中国古话说得好,“文...转载 2020-04-09 16:18:07 · 699 阅读 · 1 评论 -
C语言typedef用法详解
C语言typedef用法详解前言方法与结构的联合使用与#define的区别typedef的复杂声明前言typedef(type define)是c语言的关键字,它的作用是为一种数据类型定义一个新名字。一般用来简化类型定义。方法typedef声明的用法和普通声明的用法基本相同,只是把typedef放在声明的前面。不使用typedefchar *ptr_to_char;使用typed...原创 2020-03-26 11:00:56 · 4615 阅读 · 1 评论 -
一句话总结C语言const关键字作用
C语言const关键字作用前言例子前言const是constant的缩写,表示恒定不变的。只要一个变量使用const修饰,就意味着该变量的数据可以被访问,不能被修改。本质上就是–readonly。例子判断方法是将类型去掉,const修饰谁,谁就是不能修改的。(1)const int a=0; //a 不能修改(2)int const a=0; //a 不能修改(3...原创 2020-03-25 21:44:12 · 336 阅读 · 0 评论 -
C语言中static关键字的作用详解,全网最透彻
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都...转载 2020-03-25 21:06:34 · 849 阅读 · 0 评论 -
VS 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
在VS中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误:error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See o...原创 2019-12-23 11:47:40 · 790 阅读 · 0 评论