工作常用
文章平均质量分 59
JANYI2018
这个作者很懒,什么都没留下…
展开
-
定义的结构体里面如果有链表,定义一个变量切记陷阱(需要用指针方式这样方便分配给链表空间)!
例子 如下定义了一个结构体,结构体里面包含链表Listscheme_frame_list,那么定义此结构体变量时不可以用SCHEME_CONTENT aa;(不可以,因为没有给链表分配空间)需要定义为指针类型,如: SCHEME_CONTENT_PTR ptrp = (SCHEME_CONTENT_PTR)malloc(sizeof(SCHEME_CONTENT)); ...原创 2020-04-27 20:27:29 · 538 阅读 · 1 评论 -
linux动态库链接语句(设置) export LD_LIBRARY_PATH
在./执行程序时会提示找不到库,此时需要在里面手动敲打一个export命令例如:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/mqtt/MQTT-c/lib红色字体是你需要替换的动态库绝对目录...原创 2020-04-05 11:08:04 · 4807 阅读 · 0 评论 -
Linux下指定so动态库的加载路径的5种方法种的指定环境变量方法详解!!!(.bashrc和 /etc/profile )
首先简单说一下什么是环境变量?环境变量简单的说就是当前环境下的参数或者变量。如果说的专业一点就是指在操作系统中用来指定操作系统的一些参数。 举个我们最常见的环境变量 —— PATH,它的用途就是当用户要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还要到PATH变量中指定的路径去寻找。用户可以通过设置PATH变量,来更好的运行进程。举个常见的例...原创 2020-03-16 14:47:52 · 2016 阅读 · 0 评论 -
Linux下指定so动态库的加载路径的5种方法!!!
一、库文件的搜索路径:1、在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)3、在编译目标代码时指...原创 2020-03-09 22:04:10 · 19053 阅读 · 0 评论 -
Linux命令修改文件名和文件夹名
Linux修改文件名语句:mv oldFileNamenewFileName示例:我想把 aaa1.txt修改为 bbb1.txt示例语句:mvaaa1.txtbbb1.txt把当前目录下的file1文件名改成file2,如果该目录下有file2,则覆盖以前的file2文件。...原创 2020-03-09 16:49:23 · 4868 阅读 · 0 评论 -
linux的各种自带库-lz -lrt -lm -lc都是什么库
编译链接库:-lz -lrt -lm -lc都是什么库lz 压缩库(Z)lrt 实时库(real time):shm_open系列lm 数学库(math)lc 标准C库(C lib)-dl ,是显式加载动态库的动态函数库...原创 2020-01-31 11:56:54 · 3929 阅读 · 0 评论 -
C语言如何将字符串转十六进制
通过查ASCII表知道:'a'对应的十六进制是是0x61,'A'对应的十六进制是0x41,'f'对应的十六进制是是0x66,'F'对应的十六进制是0x46,'0'对应的十六进制是是0x30,'9'对应的十六进制是0x39,其实这里的十六进制就是由字符对应的ASCII码转换得来的,下面主要讲下如何将数字0~9和26个英文字母转换成十六进制并存到数组中,直接贴代码分析。void StringToH...原创 2019-12-18 10:30:37 · 4389 阅读 · 0 评论 -
linux编译:提示/usr/bin/ld: can not find -lsqlite3 的解决办法
编译程序提示缺少sqlite3的情况下,如果在其他arm编译器下有现成的库,可以直接拷贝过来。sudo cp /opt/arm-2008q3/arm-none-linux-gnueabi/libc/armv4t/lib/libsqlite3.so /opt/arm-2013.11/arm-none-linux-gnueabi/libc/armv4t/lib/如下:有两个编译器 arm...原创 2019-12-03 12:03:08 · 1913 阅读 · 0 评论 -
linux_gcc编译器安装详细说明(arm-2013.11-33-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2举例)
1 在官网https://www.veryarm.com/arm-none-linux-gnueabi-gcc下载解压版arm-2013.11-33-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2sudo tar -xvf arm-2013.11-33-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar...原创 2019-12-03 10:45:58 · 653 阅读 · 0 评论 -
UDP和TCP总结
INADDR_ANY 、INADDR_LOOPBACK 、INADDR_BROADCAST这三个常量在文件中的定义如下:#define INADDR_ANY (u_long)0x00000000#define INADDR_LOOPBACK 0x7f000001#define INADDR_BROADCAST (u_long)...原创 2019-12-02 15:52:01 · 201 阅读 · 0 评论 -
调用malloc时发生了什么
调用malloc时发生了什么这或许是老生常谈的问题,也是面试中经常碰到的问题,有人简单的几句话就回答完了,有人却能大谈特谈。疑问进程的堆栈结构malloc是否会占用内存malloc对应的系统调用malloc返回的地址free函数干了什么一般,我们在需要申请内存的时候,需要执行malloc(),分配内存,需要注意的是,malloc()是glibc函数,其实际对原创 2018-02-26 15:43:45 · 1222 阅读 · 1 评论 -
return EXIT_SUCCESS
stdlib里面定义的宏而已,至于意思,楼主看不懂英文?C/C++ code?12345/* * These values may be used as exit status codes. */#define EXIT_SUCCESS 0#define EXIT_FAILURE 1...原创 2018-03-06 19:58:26 · 1776 阅读 · 0 评论 -
Linux 消息队列命令
是linux/uinx上提供关于一些进程间通信方式的信息,包括共享内存,消息队列,信号ipcs用法 ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息ipcs -m 打印出使用共享内存进行进程间通信的信息ipcs -q 打印出使用消息队列进行进程间通信的信息ipcs -s 打印出使用信号进行进程间通信的信息输出格式的控制ipcs -t 输出信息的详细变化时间...原创 2018-03-09 11:21:38 · 4470 阅读 · 0 评论 -
atoi、stoi、strtoi区别
atoi、stoi、strtoi区别首先atoi和strtol都是c里面的函数,他们都可以将字符串转为int,它们的参数都是const char*,因此在用string时,必须调c_str()方法将其转为char*的字符串。或者atof,strtod将字符串转为double,它们都从字符串开始寻找数字或者正负号或者小数点,然后遇到非法字符终止,不会报异常:int main() { usin...原创 2018-03-09 11:48:55 · 2241 阅读 · 0 评论 -
linux C之alarm函数
linux C之alarm函数 (2011-11-25 11:43:17)转载▼标签: 杂谈分类: C/C alarm也称为闹钟函数,alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。要注意的是,一个进程只能有一个闹钟时间,如果在调用alarm之前已设置过闹钟时间,则任何以前...原创 2018-03-05 14:50:55 · 306 阅读 · 0 评论 -
如何自实现一个malloc函数(指定区间分配)
如何实现一个malloc函数一、概述1、malloc简介函数所在头文件:<stdlib.h>函数原型是:void *malloc (size_t n)函数功能:在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。 2、malloc函数使用注意事项申请了内存空间后,必须检查是否分配成功。当不需要再使用申请的内...原创 2018-03-05 14:52:37 · 4439 阅读 · 0 评论 -
正确使用memset
前段项目中发现一个问题,程序总是在某个dynamic_cast进行动态转换时出异常,查了半天才发现问题原来是出在memset的使用上,虽然问题本身显而易见,但当处于几十万行代码量级中时,就变得不太那么容易定位了。本文归纳了下使用memset几个需要注意的地方,虽然内容很简单,但也希望对大家有所帮助。1. memset是以字节为单位,初始化内存块。当初始化一个字节单位的数组时,可以用...原创 2018-03-12 18:46:50 · 1058 阅读 · 0 评论 -
sscanf中%s用法
sscanf中%s用法原创 2015年01月08日 15:35:065043#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){ char Buffer[512] = {" "};char IP[512]={""};char netmask[512];strcpy(Buff...原创 2018-03-05 19:25:18 · 3373 阅读 · 0 评论 -
ps -aux中STAT列的标志位
ps -aux中STAT列的标志位1、ps 的参数说明ps 提供了很多的选项参数,常用的有以下几个:l 长格式输出;u 按用户名和启动时间的顺序来显示进程;j 用任务格式来显示进程;f 用树形格式来显示进程;a 显示所有用户的所有进程(包括其它用户);x 显示无控制终端的进程;r 显示运行中的进程;ww 避免详细参数被截断;我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用。2、ps...原创 2018-03-05 19:34:54 · 783 阅读 · 0 评论 -
#undef的用法
程序示例:修改已经宏定义的符号常量的值:12345678910#include <stdio.h>int main( void ){#define MAX 200 printf("MAX= %d\n",MAX);#undef MAX#define MAX 300 printf("MAX= %d\n",MAX); return 0;}#undef #undef 是在后...原创 2018-03-22 16:04:36 · 30239 阅读 · 0 评论 -
fopen()、fwrite()、fread()函数使用说明与示例
fopen()、fwrite()、fread()函数使用说明与示例fopen()函数:1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针。2.函数原型:[cpp] view plain copyFILE * fopen(const char * path,const char原创 2018-03-19 11:58:10 · 830 阅读 · 0 评论 -
c语言中包含math.h的时用gcc编译要加-lm参数
makefile# link system shared library-----------------------------------[need modify]SYS_SO_LIBS := -lc -lpthread -lm# link system static library file------------------------------[need modify]SYS_A_LI...原创 2018-03-29 17:55:36 · 5435 阅读 · 0 评论 -
Linux 里有/lib和/usr/lib各个目录含义
注意:usr-->lib 默认存放的动态库,自己写的应用程序/home/app里面的文件都会调用此/usr-->lib 目录里面的动态库。以下是linux系统常见的重要目录以及各个目作用:/ 根目录。包含了几乎所的文件目录。相当于中央系统。进入的最简单方法是:cd /。/boot引导程序,内核等存放的目录。这个目录,包括了在引导过程中所必需的文件,引导程序的相关文件(例如grub,...原创 2018-03-20 14:46:03 · 49968 阅读 · 1 评论 -
编译错误:error: expected '=', ',', ';', 'asm' or '__attribute__' before...
我出现此问题的原因是 在两个函数之间声明了结构体。今天用gcc 编译一个文件出现如下错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token语句都快注释完了,编译还是通不过,最后检查include,才发现,原来是include漏了致命重要的”#“号!!我写成如下形式了: include <...原创 2018-03-30 14:14:41 · 105799 阅读 · 3 评论 -
VS2010创建项目生成动态库举例
以X86 32位系统为例 0 创建项目选择新建项目--------》然后选择DLL 下面名称填写要创建的目录位置选择YDT100,则在YDT100里面创建了 ctrlcmd文件夹,后续生成的工程在ctrlcmd文件夹里面的ctrlcmd.vcxproj1 如果是生成动态库(举例 目标生成 ctrlcmd.lib,此动态库需要调用commonfunc.lib)输出目录:.....原创 2018-03-21 09:55:03 · 2860 阅读 · 0 评论 -
利用word2010+直接发布到csdn
csdn上聚集了很多IT的精英,是大家交流技术的一个很好地平台。那么怎么才能方便的把自己的思路发布到csdn的博客上去呢?我觉得直接使用word编辑是最方便的,下面以word2010为例说明一下怎么发布。编辑好一篇需要发布的文章编辑文章石可以借助word自带的公式编辑器或是mathtype,对于有很多公式的朋友一定很方便。而且再从新学习csdn的脚本语言编辑公式用起来也比较麻烦。在写好的文档上点击...转载 2018-03-21 10:27:58 · 318 阅读 · 0 评论 -
在CSDN上发布视频blog
打开youku,找到视频的id替换如下代码的id部分将代码放入csdn的markdown编辑器中done<iframe height=450 width=600 src="http://player.youku.com/embed/XOTUwMDA5OTc2" frameborder=0 allowfullscreen></iframe>...转载 2018-03-21 11:00:58 · 640 阅读 · 0 评论 -
linux c/c++ 解决隐式声明与内建函数不兼容问题
原因就是因为缺少 #include<string.h> man memset 就可以知道memset包含在哪个头文件中 警告:隐式声明与内建函数'memset'不兼容警告:隐式声明与内建函数'strcpy'不兼容警告:隐式声明与内建函数'strstr'不兼容警告:隐式声明与内建函数'strncpyt'不兼容警告:隐式声明与内建函数'strlen'不兼容 ...转载 2018-04-08 09:39:00 · 1542 阅读 · 0 评论 -
VS2010调试时如何把调试信息写入日志
在调用printf之前,加上一句freopen("filename.txt", "a+", stdout);这样printf的打印信息就会被保存在filename.txt中。原创 2018-03-25 22:25:07 · 3570 阅读 · 0 评论 -
strtol函數的用法
相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include <stdlib.h>定义函数: long int strtol(const char *nptr, char **endptr, int base)函数说明: strtol()会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代...原创 2018-03-25 22:43:52 · 422 阅读 · 0 评论 -
pthread的pthread_join()函数理解实验
一、使用方式pthread_t tid;pthread_create(&tid, NULL, thread_run,NULL);pthread_join(tid,NULL);创建线程之后直接调用pthread_join方法就行了。二、为什么要使用pthread_join() 在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结...原创 2018-04-08 16:21:54 · 799 阅读 · 0 评论 -
LINUX SIGNAL信号标志详解
在终端使用kill -l 命令可以显示所有的信号。$kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) ...原创 2018-04-08 16:53:19 · 475 阅读 · 0 评论 -
【Linux函数】Signal ()函数详细介绍
1. 功能设置某一信号的对应动作2. 声明#include <signal.h>typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);1233. 参数说明 第一个参数signum:指明了所要处理的信号类型,它可以取除了SIGKILL和SIGSTOP外的任何一种信...转载 2018-04-08 17:32:19 · 184 阅读 · 0 评论 -
在#pragma pack(4)和#pragma pack(8)的情况下,结构体的大小分别是
在#pragma pack(4)和#pragma pack(8)的情况下,结构体的大小分别是原创 2016年08月09日 10:46:412357下面两个结构体[cpp] view plain copystruct One{ double d; char c; int i; } struct Two{ char c; double d; ...原创 2018-03-31 17:25:04 · 3859 阅读 · 1 评论 -
linux创建线程之pthread_create
函数简介 pthread_create是UNIX环境创建线程函数头文件 #include<pthread.h>函数声明 int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);返回值 若...转载 2018-04-08 19:14:34 · 313 阅读 · 0 评论 -
pthread_attr_init线程通俗举例讲解与线程属性
函数简介 pthread_create是UNIX环境创建线程函数头文件 #include<pthread.h>函数声明 int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);返回值 若...原创 2018-04-08 19:33:25 · 1527 阅读 · 0 评论 -
进程和线程的区别
操作系统面试题1、进程和线程的区别?解析:(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。 (3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程...原创 2018-04-08 19:50:50 · 210 阅读 · 0 评论 -
linuxC语言按行存入txt文件,按行读取txt文件
来说一说fgets(..)函数。 原型 char * fgets(char * s, int n,FILE *stream); 参数: s: 字符型指针,指向存储读入数据的缓冲区的地址。 n: 从流中读入n-1个字符 stream : 指向读取的流。 返回值: 1. 当n<=0 时返回NULL,即空指针。 ...原创 2018-03-22 10:49:10 · 15389 阅读 · 0 评论 -
int main(int argc,char* argv[])详解,以及与int main()有什么区别
K&R C 上5.10 命令行参数 中介绍的int main(int argc,char* argv[ ])在 d:\ 编写 程序,并命名为 c.c #includeint main(int argc, char ** argv){ int i; for (i=0; i < argc; i++) printf("Argument %d is %s.\n", ...原创 2018-04-09 09:38:37 · 284 阅读 · 0 评论 -
SourceInsight全工程查找替换方法
2011-12-3SourceInsight最新使用心得(全工程查找替换方法)背景:本人起底板的程序编写不符合规范,需要重新编写,例如:宏定义的规范是都要大写,且字母中间加下划线的方式,而本人没有按规则来,需要在整个程序范围内把所有的宏定义都改掉,如#define jian_dao_num_ 1 1改为#define JIAN_DAO_NUM_1 1问题:如何保证一个不漏的在所有的地方都改掉呢?方...转载 2018-04-09 09:57:37 · 18881 阅读 · 0 评论