C/C++开发
文章平均质量分 78
执著Daniel
永远对技术饱含热泪
展开
-
编译调试
目录1 编译1.1 编译流程1.2 automake生成Makefile1.3 编写Makefile.am1.4 编写bMakefile1.5底层查看命令2 gdb调试命令1 编译1.1 编译流程预处理 gcc -E hello.c -o hello.i 编译 gcc -S hello.i -o hello.s 汇编 as hello.s -o...原创 2020-04-22 17:20:41 · 382 阅读 · 0 评论 -
C++11新特性
1 C++11关键字auto:类型自动推导关键字,声明的变量必须被初始化。不能使用auto情况:函数形参、结构体非静态成员变量、数组和实例化模板时模板参数move():获得绑定到左值上的引用。将左值引用转换为右值引用nullptr:是c++中空指针类型的关键字,不能被转换成数字for(auto count : counts):遍历counts中的值,C++11中引入的auto主要有...原创 2020-04-20 20:10:52 · 211 阅读 · 0 评论 -
C/C++字符串处理
目录1 snprintf函数2 转换函数比较3 string中函数的用法1 snprintf函数1、写入目标串的字符数不超过size,包括'\0'2、必须格式化参数,防止源串包含%s等格式化字符,会在后面寻找字符串指针,若未找到,会出现非法内存访问3、必须判断返回值,避免写溢出(目标串str是字符数组,如果不以'\0'结束,对函数返回值ret(即预写入字符个数)进...原创 2020-04-20 16:37:20 · 287 阅读 · 0 评论 -
C++计算数组大小
目录1 c语言计算数组大小2 c++计算数组大小1 c语言计算数组大小c语言通过如下方式可以获取数组大小:int arr[] = {23, 34, 32};int arr_size = sizeof(arr)/sizeof(arr[0]);当数组作为函数参数时,通过这种方式计算数组的size会为1(数组名作为函数参数相当于指向数组的指针)2 c++计算数组大小...原创 2020-04-07 18:37:49 · 9014 阅读 · 4 评论 -
单例模式-基于boost库
单例模式是最常使用的设计模式之一,特别在跨文件编程时使用的最多。#include<boost/noncopyable.hpp>#include<pthread.h>#include<stdlib.h>template<typename T>class Singleton: boost::noncopyable ...原创 2017-06-06 00:26:58 · 2128 阅读 · 0 评论 -
配置加载-简单工厂实现
一、使用场景进程对多个配置进行reload,reload前判断配置的版本号是否有升级二、简单实现使用简单工厂思想进行实现。进程初始化时,加载对应的配置,保存当前配置的版本号以及加载的回调函数,并注册到全局的map 配置reload时,根据传入的配置参数,对各个配置进行reload,比较当前配置版本和历史版本是否一致,不一致才进行reload#include <iostr...原创 2016-09-22 00:54:23 · 731 阅读 · 0 评论 -
C++对C的拓展
目录一、bool类型关键字二、引用三、输入输出四、函数参数五、string类六、左值一、bool类型关键字C++在C语言的基础类型上新增了布尔类型(bool),bool可取的值有两个:true、false,占用一个字节。true代表真值,编译器内部用1来表示;false代表非真值,编译器内部用0来表示。#include <iostream&g...原创 2018-09-10 16:01:38 · 212 阅读 · 0 评论 -
C++ 虚函数问题
1. 构造函数中可以调用虚函数吗可以,只是不会产生动态行为,因为构造函数是从基类开始构造,基类在调用虚函数时,子类还未构造,所以调用的是基类的函数。2.析构函数可以调用虚函数吗如果在父类析构函数中调用虚函数,其实际调用的是子类的函数,而此时子类析构函数已经把数据销毁了,会出现不可知的结果。3.析构函数可以调用纯虚函数吗不可以,编译会出错。5.析构函数可以是纯虚函数吗可以...原创 2016-03-23 11:00:30 · 585 阅读 · 0 评论 -
C语言实现继承和多态
#include <stdlib.h>#include <string.h>#include <stdio.h>//------------- Person --------------typedef struct Person { void* derived_obj; char* name; void (*life)(s...原创 2016-04-05 23:12:04 · 1823 阅读 · 0 评论 -
C++ new操作符实现
C++ new操作符实现一、new操作符C++中new操作符是语言内置的,不能被重载,实现了两个功能:内存分配、调用对象构造函数。其中内存分配调用标准函数operator new,声明如下:void * operator new(size_t size);释放内存时使用delete运算符,底层会调用标准函数operator delete来释放内存。二、operator new...原创 2018-11-20 00:25:13 · 3007 阅读 · 0 评论 -
C++ 一些关键字的用法
一、const关键字1.1 成员变量const成员变量初始化方式:构造函数初始化列表中进行初始化 将const成员变量用static修改,在类外初始化1.2 const成员函数class A{public: void test() const { std::cout << "const func" << std::endl;...原创 2018-11-22 21:11:00 · 342 阅读 · 0 评论 -
C++ coredump实例解析
一、背景 经过重重调试后,看到编译成功的那一刻,内心充满欢喜。当程序一运行,却经常出现coredump的情况,此时内心是崩溃的。我想程序员经常会碰到这种情况,尤其使用c++语言编写代码,由于没有自动内存管理,经常会出现coredump情况,主要原因有以下几类:操作非法指针 内存访问越界:索引越界、使用高危函数等 格式化输出时数据类型错误 并发引起的问题:未加锁保护;使用线程不安...原创 2018-08-25 23:30:36 · 3212 阅读 · 0 评论 -
C语言实现函数重载
C语言实现函数重载c语言中不允许有同名函数,因为编译时函数命名是一样的,不像c++会添加参数类型和返回类型作为函数编译后的名称,进而实现重载。如果要用c语言显现函数重载,可通过以下方式来实现:使用函数指针来实现,重载的函数不能使用同名称,只是类似的实现了函数重载功能 重载函数使用可变参数,方式如打开文件open函数 gcc有内置函数,程序使用编译函数可以实现函数重载示例如下:#...原创 2017-04-09 22:58:49 · 33488 阅读 · 3 评论 -
STL常见容器
目录顺序容器vectorlistdeque使用区别关联容器setmaphash_map顺序容器vector可以动态增加空间大小,并不是在原空间之后续接新空间,而是以原空间大小的两倍另外配置一块较大空间。支持随机存储,常用操作:push_back,pop_backvector真正删除元素:v.erase(remove(v.begin(), v...原创 2016-02-26 14:00:58 · 685 阅读 · 0 评论