c/c++
文章平均质量分 90
高晓伟_Steven
wx_cangying1988的博客
展开
-
C专家编程-读书笔记之第三章
要点1,关于标识符在声明、被强制转换时和被调用时的方法的联系和不统一性:比如 int *p=1;和int *p;p=1;比如char (*j)[20];j=(chair(*)[20])malloc(20);比如在声明中()通常代表函数的出现。要点2,关于类型声明符和类型限定符的作用对象:文中举例:const int * c转载 2013-06-19 10:20:13 · 941 阅读 · 1 评论 -
linux下c++的编译器g++的基本使用
g++是 linux下c++的编译器,在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件2.将预处理后的文件不转换成汇编语言,生成文件.s3.有汇编变为目标代码(机器代码)生成.o的文件4.连接目标代码,生成可执行程序g++ 编译c++经常使用的参数:-c只编译,不连接。例如: g++ -c helloworld.cpp只生成hello转载 2015-02-11 20:54:03 · 2076 阅读 · 0 评论 -
解决找不到动态库libpthread.so
用gcc编译程序时遇到如下问题/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: note: 'sem_close@@GLIBC_2.2.5' is defined in DSO /lib64/libpthread.so.0 so try adding it to the linker com原创 2015-06-16 16:33:01 · 39532 阅读 · 2 评论 -
chdir与getcwd
chdir(改变当前的工作目录)相关函数 getcwd,chroot表头文件 #include定义函数 int chdir(const char * path);函数说明 chdir()用来将当前的工作目录改变成以参数path所指的目录。返回值 执行成功则返回0,失败返回-1,errno为错误代码。范例#includemain(){ chdir(“/tmp”转载 2015-06-11 08:58:50 · 2178 阅读 · 0 评论 -
Iprobe for Hanic Improved documentation
增加了4个文件:runmod-hanic4.h,runmod-hanic4.c,source-hanic4.h,source-hanic4.csource-hanic4.h,source-hanic4.c是根据 napatech网卡的source更改而来。重新实现了线程初始化函数(Hanic4StreamThreadInit)和从网卡获取数据包的函数(Hanic4StreamLoop)原创 2016-08-24 17:34:07 · 654 阅读 · 0 评论 -
C语言base64编码与解码
昨天工作中遇到需要将char *转换成base64的问题,把这块单独提取出来作为一个模块。 这里有几个参数需要解释一下: char *out:一块buffer的首地址,这块buffer就是用来存放我们转码后的内容的。当然要注意提前malloc内存。 char *in:原字符串的首地址,指向需要转码的内容,即原字符串内容。 int inlen:原字符串长度。 int maxlen:可支持的转原创 2016-11-15 10:39:10 · 10298 阅读 · 0 评论 -
关于编译时报implicit-function-declaration(隐式声明)错误的解决方法
隐式声明这块的处理一般来说是必须的,但有时候处理这方面的问题真的很让人头疼。有个比较省力的方法,在编译时将“-Werror-implicit-function-declaration”这句话删掉。我是在整个工程里面搜索这句话,发现在configure里面,然后就是将configure里面的这名删掉,就可以编译了。原创 2016-10-20 13:49:58 · 58691 阅读 · 4 评论 -
Error: no such instruction 问题处理(去掉march优化)
我的gcc从4.2升级到6.2之后编译程序就出现的如下错误: /tmp/ccI5xBw4.s:422: Error: no such instruction: `sarx %eax,%edx,%eax' /tmp/ccI5xBw4.s:448: Error: no such instruction: `shlx %eax,%ecx,%eax' /tmp/ccI5xBw4.s:1原创 2017-03-02 14:40:01 · 14103 阅读 · 1 评论 -
变量定义但未使用的警告(C语言去出警告)
C语言中定义了变量但暂时又不想使用,编译时会报出“变量定义但未使用的警告”。 看到过一遍文章,不少高手都是用”(void)变量”这样的方法去警告的。 这里记下,方便以后查找。原创 2017-05-17 10:23:39 · 12781 阅读 · 0 评论 -
linux c语言查找指定程序pid
工作上需要向特定进程发送USER2信号,查询进程时找到一个已经封装好的接口,做个备忘。 做为其它程序接口是在程序中加入#include "pidof.h",关联是加上pidof.c就可以了。 如果做为单独程序来使用,将.c中的#include "pidof.h"注掉就能编了。pidof.h#ifndef _PIDOF_H_#define _PIDOF_H_int lookup_pid(cha原创 2017-05-27 15:44:51 · 2443 阅读 · 0 评论 -
socket网络编程中read与recv区别
使用read接收文件,由于传过来的文件大小错误,结果导致程序卡死在read处,之后改用recv接收。 recv使用MSG_DONTWAIT,在发现多次接收长度小于等于0时,中断接收返回。 下面是摘抄的一段read和recv区别的介绍。1、read 与 recv 区别read 原则: 数据在不超过指定的长度的时候有多少读多少,没有数据则会一直等待。所以一般情况下:我们读取数据都需要采用循环读原创 2017-05-27 16:01:39 · 27965 阅读 · 0 评论 -
c语言List头文件和应用
util_list.h#ifndef __UTIL_LIST__#define __UTIL_LIST__/*双链节点*/typedef struct list_node{ list_node * prev; list_node * next;} LIST_NODE;/*单链节点*/typedef struct slist_node{ slist_node * ne原创 2017-11-29 14:02:01 · 10836 阅读 · 0 评论 -
C和C++之间so库的互相调用
昨晚有个朋友问我关于在C中调用C++库的问题,今天午饭后,由于脖子痛的厉害而没有加入到我们组的“每天一战”的行列中去,所以正好将C和C++之间的库调用关系做个总结。1.extern "C"的理解:很多人认为"C"表示的C语言,实际并非如此,"C"表示的是一种链接约定,只是因C和C++语言之间的密切关系而在它们之间更多的应用而已。实际上Fortran和汇编语言也常常使用,因为它们也正好符转载 2015-02-11 20:52:40 · 11554 阅读 · 0 评论 -
c语言time.h函数库小结
//time.h一、重要的宏:CLOCKS_PER_SEC:每秒钟的滴答数clock_t:滴答计数类型time_t:日历时间的秒计数二、重要数据类型:struct tm:年月日等得细分时间数据结构三、全部函数:clock_t clock( void );返回本程序自启动来,流逝的时钟滴答数。 double di转载 2015-02-16 08:36:51 · 1003 阅读 · 0 评论 -
C++容器使用经验总结(一)
第1章 容器第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。非标准的关联容器hash_set、hase_multiset、hash_map和hash_mult转载 2015-01-15 20:55:10 · 2579 阅读 · 0 评论 -
避免常见的内存错误应注意的五点
【规则1】用malloc或new申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存。 【规则2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。 【规则3】避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。 【规则4】动态内存的申请与释放必须配对,防止内存泄漏。 【规则5】用free或de原创 2013-06-20 09:22:47 · 1005 阅读 · 0 评论 -
使用auto_ptr类的限制(auto_ptr的缺陷)
1)不要使用auto_ptr对象保存指向静态分配对象的指针,否则,当auto_ptr对象本身被撤销的时候,它将试图删除指向非动态分配对象的指针,导致未定义的行为。2)永远不要使用两个 auto_ptrs 对象指向同一对象,导致这个错误的一种明显方式是,使用同一指针来初始化或者 reset 两个不同的 auto_ptr对象。另一种导致这个错误的微妙方式可能是,使用一个 auto_ptr 对象原创 2013-06-20 10:16:25 · 3144 阅读 · 0 评论 -
TCP连接探测中的Keepalive 和心跳包
采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TCP协议转载 2013-11-01 13:51:37 · 1221 阅读 · 0 评论 -
fatal error C1189
fatal error C1189: #error : Building MFC application with /MD (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD这是由于VS2005默认的MFC程序是使用动态MFC库(Use MFC in a转载 2013-12-10 14:26:48 · 1771 阅读 · 0 评论 -
google_protobuf数据类型
要通信,必须有协议,否则双方无法理解对方的码流。在protobuf中,协议是由一系列的消息组成的。因此最重要的就是定义通信时使用到的消息格式。Protobuf消息定义消息由至少一个字段组合而成,类似于C语言中的结构。每个字段都有一定的格式。字段格式:限定修饰符① | 数据类型② | 字段名称③ | = | 字段编码值④ | [字段默认值⑤]①.限定修饰符包原创 2014-01-06 16:31:19 · 105945 阅读 · 3 评论 -
C++ 注册表编程
1.基础知识注册表的组织方式跟文件目录比较相似,主要分为根键、子键和键值项三部分,与文件目录对应的话就是根目录、子目录和文件。分别介绍一下这三部分:(1)根键。分为5个,分别为HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS和HKEY_CURRENT_CONFIG,把它们理解成磁盘的五个分区可以了。转载 2014-02-20 18:32:38 · 1021 阅读 · 0 评论 -
C#制作“安装和部署”时,实现软件开机启动
C#制作“安装和部署”时,实现软件开机启动 使用VS自带的安装模块可以方便的对项目进行打包,如果仔细观察的话,我们可以发现,VS制作安装包是可以操作注册表的,那么我们创建开机启动就变得简单了。 具体操作办法如下: 鼠标右键安装项目->视图->注册表 依次创建键: HKEY_CURRENT_USER\Software\Microsoft\Windo转载 2014-02-19 13:01:45 · 1522 阅读 · 0 评论 -
互斥锁pthread_mutex_t的使用
1. 互斥锁创建 有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; 在LinuxThreads实现中,pthread_m转载 2014-03-10 16:03:54 · 2272 阅读 · 0 评论 -
Linux下libpcap的安装
一、 安装过程参照以下步骤: 1、打开网址:www.tcpdump.org/ 下载 libpcap-1.0.0.tar.gz (512.0KB) 软件包,通过命令 tar zxvf libpcap-1.0.0.tar.gz 解压文件,并将其放入自定义的安装目录。2、打开网址:flex.sourceforge.net/ 下载 flex-2.5.35.tar.gz (1.40MB) 软件包,通原创 2014-06-29 10:15:23 · 4897 阅读 · 0 评论 -
CentOS 安装Sqlite3
方法一:wget http://www.sqlite.org/sqlite-autoconf-3070500.tar.gztar xvzf sqlite-autoconf-3070500.tar.gzcd sqlite-autoconf-3070500./configuremakesudo make install sudo yu原创 2014-06-29 10:25:26 · 27271 阅读 · 0 评论 -
C语言 检查文件是否存在
#include #include #include #include char exist_file1(const char *path){ return fopen(path, "r")!= NULL;}char exist_file2(const char *path){ return access(path,0) ==0;}char ex转载 2014-06-09 14:20:00 · 1561 阅读 · 0 评论 -
dns解析host和IP
dns.h#ifndef _DNS_H_#define _DNS_H_#define DBG_PRINT 0#define DNS_PORT 53#define MAX_DOMAIN 256#define DNS_TYPE_A 1 //ipv4#define DNS_TYPE_CNAME 5 //cname#define DNS_TYPE_...原创 2018-05-14 11:17:24 · 6117 阅读 · 1 评论