![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 84
littlewhite1218
举世皆太平,我独不得宁。希然吾所有,不与天下争
展开
-
extern声明变量详解
昨天写完文章快零点,为了不浪费每天一次的群发资格,得赶在零点之前发送,刚给自己的个人微信号发了预览,Mac竟然死机了,看来一个月不关机还是会出点小问题。写的文章还没保存,这下只能是从手机复制粘贴发送到电脑上重新编辑了,于是狠了心按了强制关机。重新开机后发现,所有软件竟然全部恢复了死机前的状态,包括我那正在编辑还没保存的文稿,这里要为Mac系统点个赞!以上是题外话,今天的内容是编程相关的,非计算原创 2014-09-30 14:13:43 · 12134 阅读 · 0 评论 -
gtest
安装项目地址: https://github.com/google/googletestgit clone https://github.com/google/googletestcd googletest/googletestmkdir buildcd buildcmake .. -DCMAKE_INSTALL_PREFIX=/usr/localmakesudo make instal原创 2017-01-13 11:52:27 · 538 阅读 · 0 评论 -
libevent evhttp学习——http服务端
http服务端相对客户端要简单很多,我们仍旧使用libevent-2.1.5版本,服务端接口和2.0版本没有区别基本流程http服务端使用到的借口函数及流程如下创建event_base和evhttpstruct event_base *event_base_new(void);struct evhttp *evhttp_new(struct event_base *base);绑定地址和端口i原创 2016-08-06 00:47:03 · 6758 阅读 · 1 评论 -
libevent evhttp学习——http客户端
基本环境使用版本为libevent-2.1.5,目前为beta版,其中evhttp和旧版区别在于新增了如下接口// 设置回调函数,在包头读取完成后回调void evhttp_request_set_header_cb (struct evhttp_request *, int(*cb)(struct evhttp_request *, void *))// 设置回调函数,在body有数据返回后回调原创 2016-08-05 17:04:27 · 16593 阅读 · 2 评论 -
C++ & Python 多线程笔记
C++ & Python 多线程笔记原创 2016-08-01 17:41:47 · 536 阅读 · 0 评论 -
gdb调试技巧备忘
准备工作为了能让程序更直观的被调试,在编译时应该添加一些选项-g: 添加调试选项-ggdb3: 调试宏定义启动方式不带参数gdb ./a.out带参数gdb ./a.outset args -a -b -c any_argument_you_need b main run 调试core文件gdb bin_name core_name调试正在运行的程序大致按如下步骤ps ax原创 2015-09-11 17:26:57 · 5400 阅读 · 1 评论 -
Python调用C++程序备忘笔记
Python调用C++程序备忘笔记Python的优点是开发效率高,使用方便,C++则是运行效率高,这两者可以相辅相成,不管是在Python项目中嵌入C++代码,或是在C++项目中用Python实现外围功能,都可能遇到Python调用C++模块的需求,下面列举出集中c++代码导出成Python接口的几种基本方法原生态导出Python解释器就是用C实现,因此只要我们的C++的数据结构能让Python认识原创 2015-09-02 17:30:04 · 2005 阅读 · 1 评论 -
Linux程序编译链接动态库版本的问题
在实际生产环境中,程序的编译和运行往往是分开的,但只要搞清楚这一系列过程中的原理,就不怕被动态库的版本搞晕。简单来说,按如下方式来做编译动态库时指定-Wl,-soname,libxxx.so.a,设置soname为libxxx.so.a,生成实际的动态库文件libxxx.so.a.b.c,编译可执行程序时保证libxx.so存在,如果是软链,必须指向实际的动态库文件libxxx.so.a.b.c运行可执行文件原创 2015-08-17 15:40:01 · 10323 阅读 · 4 评论 -
没有main函数的helloworld
几乎所有程序员的第一堂课都是学习helloworld程序,下面我们先来重温一下经典的C语言helloworl/* hello.c */#include int main(){ printf("hello world!\n"); return 0;}这是一个简单得不能再单的程序,但它包含有一个程序最重要的部分,那就是我们在几乎所有代码中都能看到的main函数,我们编原创 2014-10-15 09:44:13 · 1064 阅读 · 0 评论 -
C语言强符号和弱符号
阅读原文http://littlewhite.us/archives/250之前在extern “C” 用法详解中已经提到过符号的概念,它是编译器对变量和函数的一种标记,编译器对C和C++代码在生产符号时规则也是不一样的,符号除了本身名字的区别外,还有强符号和弱符号之分我们先看一段简单的代码/* test.c */void hello();int main(){原创 2014-10-13 22:10:25 · 1484 阅读 · 0 评论 -
extern “C”用法详解
简单来说,extern “C”是C++声明或定义C语言符号的方法,是为了与C兼容。说来容易,要理解起来还是得费些周折,首先我们要从C++和C的区别说起。符号大家都知道,从代码到可执行程序需要经过编译和链接两个过程,其中编译阶段会做语法检测,代码展开,另外它还会做一件事,就是将变量转成符号,链接的时候其实是通过符号来定位的。编译器在编译C和C++代码时,将变量转成符号的过程是不同的。本文所使原创 2014-09-30 16:56:19 · 853 阅读 · 0 评论 -
让你的程序更优雅的sleep
sleep的作用无需多说,几乎每种语言都提供了类似的函数,调用起来也很简单。sleep的作用无非是让程序等待若干时间,而为了达到这样的目的,其实有很多种方式,最简单的往往也是最粗暴的,我们就以下面这段代码来举例说明(注:本文提及的程序编译运行环境为Linux)原创 2014-10-01 13:46:34 · 708 阅读 · 0 评论 -
C++ const知多少
const修饰变量关于const最常见的一个面试题是这样的:char *const和const char*有什么区别,大家都知道const修饰符代表的是常量,即const修饰的变量一旦被初始化是不能被更改的,这两个类型一个代表的是指针不可变,一个代表指针指向内容不可变,但具体哪个对应哪个,很多人一直搞不清楚。有这样一个规律,const修饰的是它前面所有的数据类型,如果const在最前面,那原创 2014-10-01 13:20:26 · 471 阅读 · 0 评论 -
C++数据库操作之SOCI
SOCI是一个数据库操作的库,并不是ORM库,它仍旧需要用户编写sql语句来操作数据库,只是使用起来会更加方便,主要有以下几个特点以stream方式输入sql语句通过into和use语法传递和解析参数支持连接池,线程安全由此可见它只是一个轻量级的封装,因此也有更大的灵活性,后端支持oracle,mysql等,后续示例均基于mysql安装git项目地址https://github.com/SO原创 2017-01-23 09:28:13 · 10291 阅读 · 2 评论