C/C++
文章平均质量分 51
Turbyun
只要你不打算一口吃成一个胖子,所有的东西都是纸老虎
展开
-
vsprintf 对字符串添加命令的使用
C 库函数 - vsprintf()" style="border:0px; margin:0px; padding:0px; max-width:100%; height:auto"> C 标准库 - 描述C 库函数 int vsprintf(char *str, const char *format, va_list arg) 使用参数列表发送格式化输出到字符串。原创 2018-03-27 15:15:55 · 478 阅读 · 0 评论 -
C++ 使用jsoncpp 封装及解析 json字符串(包含复杂数组)
#include <json/json.h>#include <string>#include <iostream>using namespace std;int main(){ //std::string strValue = "{\"name\":\"json\",\"array\":[{\"cpp\":\&原创 2018-10-23 17:31:00 · 19199 阅读 · 2 评论 -
C++ jsoncpp结构体数据转换为json字符串 // json字符串转换为结构体数据
// jsoncpp使用方法总结// 结构体数据转换为json字符串// json字符串转换为结构体数据 // jsoncpp下载地址 http://sourceforge.net/projects/jsoncpp/ // 样例代码如下#include <stdio.h>#include <string.h>#include <memor...转载 2018-10-23 21:54:51 · 11809 阅读 · 6 评论 -
C实现的 简易的http服务器
#include <stdio.h>#include <ctype.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <unistd.h>#include <stdlib.h>#include原创 2018-10-29 11:17:44 · 1642 阅读 · 0 评论 -
值得学习的C语言开源项目
值得推荐的C/C++框架和库【本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm】留作存档下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设...转载 2018-10-31 14:09:22 · 228 阅读 · 0 评论 -
5、map 的用法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...原创 2018-12-26 18:25:30 · 452 阅读 · 0 评论 -
6、 继承 -- 基类 、派生类及virtual的用法
LibMat为基类,Book 是其派生类当 LibMat 中print() 不加virtual时,普通函数print(),调用形参为LibMat, 实参为Book时,依然会调用LibMat类的print()成员函数,只有当为virtual时,才会调用Book类的print()成员函数注:普通函数 void print(const LibMat& mat) 形参为const, 当...原创 2019-01-17 11:39:37 · 656 阅读 · 0 评论 -
Mm
# common makefile header## -Wl: 使用gcc命令时告知要使用到链接器# uuid: 使用libuuid需要先安装uuid开发包#DIR_INC := -I ./includeDIR_INC := -I ./include/fastdfsDIR_INC += -I ./include/fastcommonDIR_INC += -I ./util/inc...原创 2019-01-28 17:32:42 · 170 阅读 · 0 评论 -
cc、gcc、g++、CC的区别概括
cc、gcc、g++、CC的区别概括gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。cc是Unix系统的C Compiler,而gcc则是GNU Compiler Collection,G...转载 2019-01-30 11:42:29 · 350 阅读 · 0 评论 -
extern "C" 的用法
extern "C" 的用法1. 在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理 extern "C" { #include "cExample.h" }而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编...原创 2019-03-19 17:12:08 · 208 阅读 · 0 评论 -
C++ Jsoncpp 解析json字符串
使用方法 下载源码解压之后得到jsoncpp-src-0.5.0文件夹,我们只需要jsoncpp的头文件和cpp文件,其中jsonscpp的头文件位于jsoncpp-src-0.5.0\include\json,jsoncpp的cpp文件位于jsoncpp-src-0.5.0\src\lib_json。 json: json操作所需的头文件,此文件夹名字不能修改,因为lib_jso...转载 2018-10-23 17:05:41 · 4059 阅读 · 0 评论 -
Linux C 回调函数简单描述
简单的注册函数 ,待后续完善修改:#include<stdio.h>typedef void (* def_func)(int n); // 注册函数 -- .dllvoid Register_func(def_func func, int a){ int m = 100; // 生成我们自己的资源 printf("This is Regi...原创 2018-04-11 15:55:51 · 1106 阅读 · 0 评论 -
用printf做彩色日志记录 及宏定义printf
[C编程在Linux上]用printf做彩色日志记录写了一个简单的程序,但是考虑到有一些信息是需要打印在控制台上的,就像在windows上启动apache tomcat时控制台显示的信息一样。琢磨一会儿之后,对printf进行了封装,支持控制台打印日志,支持输出到文件里。不过控制台都是固定颜色的,不好看。于是在网上找了一下资料,printf还真支持输出不同的颜色,如下:实例:printf("\03...原创 2018-04-26 09:42:22 · 981 阅读 · 0 评论 -
C结构体 直接赋值及 memcpy
一、C结构体可直接 赋值二、C结构体可memcpy()#include <stdio.h>#include <string.h>typedef struct mystruct{ int a; short b; char sh[16];}mystruct_T;int main(int argc, const char *argv[...原创 2018-06-27 16:14:33 · 11470 阅读 · 0 评论 -
升级 gcc g++ 版本 支持-std=c++11 特性
CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0)或者 添加yum 的 repo 文件 也不行, 只能更新到 4.4.7!采取手动编译安装了1、 获取安装包并解压wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2tar -jxvf gcc-6.1.0.tar.bz2当然,...原创 2018-07-30 14:39:23 · 19751 阅读 · 4 评论 -
va_start和va_end使用详解
转载于:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html 本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时...转载 2018-08-17 18:15:38 · 175 阅读 · 0 评论 -
TCP 网络超时 select 及 recv 实现
fd_set set; struct timeval st_time; st_time.tv_sec = 3 * 3; st_time.tv_usec = 0; while (1) { strcpy(sendbuf, "hello every"); FD_ZERO(&set); ...原创 2018-08-28 11:21:22 · 2193 阅读 · 0 评论 -
fork -- 子进程共享父进程打开的文件描述符
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#define FILE_PATH "file_point"int main(int argc, const char *argv[]){ pid_t pid; //c...原创 2018-09-06 14:28:28 · 1376 阅读 · 0 评论 -
atfork() --同步父子进程 pthread_mutex_lock加解锁问题
问题: 父进程先开启一个子线程,子线程中调用pthread_mutex_lock。再fork子进程,子进程同样调用pthread_mutex_lock ,导致的死锁问题。sleep() 替换 nanosleep() 纳秒精度 //sleep(1); struct timespec ts = {1, 0}; nanos...原创 2018-09-07 09:37:17 · 1200 阅读 · 0 评论 -
线程与信号 -- pthread_sigmask() sigwait()
一、主线程发送USR1信号给子线程1 ,子线程中添加 信号捕捉,子线程2没有捕捉信号,导致直接退出#include <stdio.h>#include <pthread.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <errn...原创 2018-09-07 12:02:03 · 837 阅读 · 1 评论 -
哈希表 -- C语言实现
1 哈希表原理这里不讲高深理论,只说直观感受。哈希表的目的就是为了根据数据的部分内容(关键字),直接计算出存放完整数据的内存地址。试想一下,如果从链表中根据关键字查找一个元素,那么就需要遍历才能得到这个元素的内存地址,如果链表长度很大,查找就需要更多的时间.void* list_find_by_key(list,key){ for(p=list;p!=NULL; p=p-&...转载 2018-09-27 17:09:53 · 775 阅读 · 0 评论 -
gcc 编译及Makefile
学习Makefilegcc编译规则1、预处理2、编译3、汇编4、链接写Makefilegcc编译规则1、预处理在预处理阶段,编译器主要作加载头文件、宏替换、条件编译的作用。一般处理带“#”的语句。我们可以通过gcc 的 -E 选项进行查看,如下所示: gcc -E hello.c > hello.i2、编译在编译过程中,编译器主要作语法检查和词法分析。在确认所有指令都符合语法...原创 2019-06-13 13:09:20 · 901 阅读 · 1 评论