
c&c++
c c++ git makefile svn
琴棋书画诗茶酒
这个作者很懒,什么都没留下…
展开
-
qt编译调优
1、开始/Qt5.7.1/Qt5.7/MinGW 5.3.0(Community)/Qt 5.7 for Desktop(MinGW 5.3.0 32 bit)菜单栏->工具-> 选项->构建与运行->构建套件->点击当前使用的kit->在同一页面找到 Environment ->点击change ->2、打开项目路径【cd /d widows project path】,输入指令 qmake -project。在弹出的窗口 添加MAKEFLAGS=-j8。特别的,对于msvc还需要在pro文件中添加。原创 2022-10-04 13:48:10 · 569 阅读 · 0 评论 -
gcc --sysroot
比如编译器通常会在 /usr/include 和 /usr/lib 中搜索头文件和库,使用这个选项后将在 dir/usr/include 和 dir/usr/lib 目录中搜索。如此处我们指定 -sysroot=/home/shell.albert/tools/toolschain_arm/4.4.3/arm-none-linux-gnueabi/sys-root。编译过程中需要引用的库,头文件,如果要到/usr/include目录下去找的情况下,则会在前面加上逻辑目录。–sysroot=dir 的作用。原创 2022-09-19 11:44:42 · 1677 阅读 · 1 评论 -
今日学习记录
Linux C++获取磁盘剩余空间和可用空间。原创 2022-09-18 21:41:27 · 250 阅读 · 0 评论 -
C语言编程操作
char & unsigned charchar的最高位为符号位,因此char能表示-127~127,unsigned char没有符号位,因此能表示0-255主要是符号位,但是在普通的赋值,读写文件和网络字节流都没什么区别,反正就是一个字节,不管最高位是什么,最终的读取结果都一样,只是你怎么理解最高位而已,在屏幕上面的显示可能不一样。open是unix系统调用函数;fopen是ANSIC标准中的C语言库函数第一行和第四行的var地址一样;给人的第一感觉:第四行和第六行var是第一个,其实是错觉,原创 2022-06-03 18:05:49 · 145 阅读 · 0 评论 -
高质量程序设计指南C++学习总结二
1、不要将正常值和错误标志混在一起返回。建议正常值用输出参数获得,而错误标志用return语句返回。2、函数名字与返回值类型在语义上不可冲突。违反这条规则的典型代表是C标准库函数getchar();3、4、在函数体的“入口处”,对参数的有效性进行检查。很多程序的错误是由非法参数引起的,我们应该充分理解并正确使用“断言”(assert)来防止此类错误5、 尽量避免函数带有“记忆”功能。相同的输入应当产生相同的输出。带有“记忆”功能的函数,其行为可能是不可预测的,因为它的行为可能取决于某种“记忆状态”。原创 2022-05-17 19:24:40 · 381 阅读 · 0 评论 -
高质量程序设计指南C++学习总结一
1、分而治之;2、优化工作不是可有可无的事情,而是必须要做的事情;3、为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人;4、技术评审(Technical Review, TR)的目的是尽早地发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量5、测试是通过运行测试用例(Test Case)来找出软件中的缺陷。测试与技术评审的主要区别是:前者要运行软件而后者不必运行软件(动态检查和静态检查)。6、改错的最大忌 是“急躁 干”。人们常说“原创 2022-05-17 09:50:09 · 439 阅读 · 0 评论 -
Linux fork那些隐藏的开销
参考链接:https://mp.weixin.qq.com/s?__biz=Mzg2OTc0ODAzMw==&mid=2247502339&idx=1&sn=536c0a37bf9ff4c746e3911857e92e48&source=41#wechat_redirect原创 2022-05-16 14:54:11 · 169 阅读 · 0 评论 -
60行C代码的shell领略Unix哲学之美
60行C代码实现一个shell。在实现它之前,先看看这样做的意义。美是有目共睹的。Unix之美,稍微体会,便能得到。1969年,Unix初始,没有fork,没有exec,没有pipe,没有 “一切皆文件” ,但是那时它已经是Unix了。它简单,可塑。Melvin Conway在1963年的论文中叙述fork思想时就解释说并行路径要用结果来交互,也就是在汇合的join点来同步结果。这个同步点所得到的,就是一个并行进程的 输出 。在此之外,Unix还有另一个原则,就是 组合小程序!Unix把一系列功能转载 2022-05-16 14:34:42 · 184 阅读 · 0 评论 -
linux学习3
删除公共字符#include<iostream>#include<string>using namespace std;int main(){ string s1; string s2; string s; getline(cin, s1); getline(cin, s2); int hash[256] = {0}; // 1.遍历str2,记录相应字符 for(auto e : s2)原创 2022-05-12 20:33:10 · 145 阅读 · 0 评论 -
c++继承知识点
1、在继承体系中,很少用private,一般使用都是public继承2、权限大小关系:public > protected > private.3、对于访问修饰限定符,如果不写,默认struct中成员默认是public,class默认是private. 对于继承也一样,struct中默认的继承方式是public;class默认的是private,但是最好显式写出。4、赋值兼容规则 - 切片,把子类中父类那部分切来赋值过去。 Person p; Student s; //1.父类 =原创 2022-05-15 14:10:06 · 295 阅读 · 0 评论 -
博客学习记录
1、学习安卓手机地框架和库;2、strace 查看一些脚本的函数调用,熟悉一些强大地函数和实现原理;3、linux shell 冒号是空指令,起到占位符地作用;cJSONcJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。Tinyhttpdtinyhttpd是一个超轻量型Http Se原创 2022-05-09 18:56:29 · 299 阅读 · 0 评论 -
makefile学习
windows中间代码文件.objmakefile 使用变量objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.oedit : $(objects) cc -o edit $(objects) \换行符只要 make 看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果 make找到一个 whatever.o,那么 whatever.c,就会是 whatever.o 的依赖原创 2022-05-03 10:15:43 · 377 阅读 · 0 评论 -
linux定时器编程
signal(SIGALRM, sigFunc); //当收到SIGALRM的信号就执行sigFunc函数setitimer(ITIMER_REAL, &tv, NULL); //ITIMER_REAL–系统真实时间,根据传入的&tv参数确定,启动定时器后第一次多久发出sigalrm信号,和之后的,每一次发出sigalrm信号的时间间隔。。#include <stdio.h>#include <signal.h> #include <sys/time.h转载 2022-05-01 13:15:17 · 252 阅读 · 0 评论 -
cmake地使用
文件目录main.cpp#include "test01/test01.h"#include "test02/test02.h" int main(){ TEST01 test01; test01.Print(); TEST02 test02; test02.Print(); return 0;} CMakeLists.txtcmake_minimum_required(VERSION 2.8)add_subdirectory(test01)转载 2022-05-01 12:44:06 · 68 阅读 · 0 评论 -
c++ 单例模式
目的:为了使得系统中的某个对象只初始化一次。。这个目的我的第一个想法就是我系统初始化我只new一次就可以了麻,但当程序过大的时候,有时会忘记从而再次初始化,浪费调试的时间。。所以如果在写程序的时候,就可以避免对象被new两次就可以让程序更少bug,那么这个程序就很nice…public即可在类的外部使用new()来初始化对象,但如果是private则不能在类的外部使用new(),所以只能类自己来构造。类中的static成员static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而转载 2022-05-01 12:37:18 · 92 阅读 · 0 评论 -
空指针的简单操作
#include "iostream" using namespace std; //空指针调用成员函数 class Person{ public: void showPerson() { cout << "this is person" << endl; }; void showPersoAge() { if(this == NULL) { return; //避免传入空指针转载 2022-04-30 19:51:34 · 306 阅读 · 0 评论 -
this指针
解决名称冲突:如下所示形参实参都叫age ,这个时候可用age,避免赋值错误。如果第八行写为age = age;则会让Class分不清是类中的int age ,还是形参age,结果导致age != 18。#include "iostream" using namespace std;class Person{public: Person (int age) { //m_age = age; this->age = age;//this指针指向 被调用的成员函数 所属的对象转载 2022-04-30 19:44:28 · 55 阅读 · 0 评论 -
c++virtual
1.什么是virtualvirtual是一个C++的修饰符,用于修饰函数,被修饰的函数称为虚函数。2.为什么需要?在C++中,我们都知道要实现多态有2种方法,一种是重写,一种是重载,重载是横向的,意思是只发生在同一个类中,根据函数的参数个数,类型不同从而实现重载,而重写则是纵向的,发生在继承中,子类函数覆盖父类函数,父类指针指向子类实体时,应该实现运行时多态。3.通常用在什么情形?1.作为基类的类的析构函数如果一个类做为父类,然后它被别人继承,当用子类指针指向子类时不会出现任何的问题,但是如果用原创 2022-04-30 11:30:02 · 7666 阅读 · 0 评论 -
malloc之与new
new 与 malloc 的区别1、new 是运算符,malloc 时系统函数2、new 先开辟内存,再调用构造对象的构造函数 malloc 只开辟内存3、new 可以给开辟的内存进行初始化,malloc 不能初始化4、new 开辟内存成功返回对象类型的指针,malloc 开辟成功返回void *类型的指针5、new 开辟失败抛出异常,malloc 返回NULL6、new 开辟内存给定对象的个数,malloc 需要给定内存块的大小7、可以看出new []在开辟内存的时候会多开辟出4个字节记录对原创 2022-04-30 10:34:32 · 357 阅读 · 0 评论 -
c++ stl学习
开发环境visual studio一个工程包括:头文件外部依赖项源文件资源文件vs studio 如何快速添加代码段参考链接:https://www.cnblogs.com/cyx-b/p/12240709.html模板函数编写地代码忽略函数类型原理:模板会通过编译器生成所有类型函数的代码;编译器对其进行了处理;template 或者 template 每一个函数定义的地方前面都要加入一个template 头;模板函数会进行自定义函数推导;显示地指定类型:MySwap(a,b原创 2022-04-29 12:31:30 · 183 阅读 · 0 评论 -
c++STL学习
模板类实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。核心包括以下三个组件容器(Containers) 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。算法(Algorithms) 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。迭代器(iterators) 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。#include <iostre原创 2022-04-27 21:52:57 · 1617 阅读 · 0 评论 -
c++高级教程学习
iostream cin coutofstream out file streamifstream in file streamfstream file streaam 双向流ios::app appendios::ate at endios::in inios::trunc trancateclose() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。写入文件: ofstream 或 fstream 对象;读取文件:ifstream 或 fstream原创 2022-04-26 19:14:01 · 814 阅读 · 0 评论 -
c++ 薄弱点复习
g++-O3 优化,生成内联,堆栈少了,不利于排查;-UMACROu unset macro-w warning 屏蔽告警-Wall warning all 显示所有告警信息-lLIBRARY 搜索指定的函数库-LDIRECTORY 额外的函数库路径-IDIRECTORY 额外的头文件路径-g 生成调试信息-DMACRO 定义宏using namespace std;命名空间,区分代码;#include c++头文件貌似都没有以.h结尾C++ 接口 也叫抽象类,也叫纯虚函数原创 2022-04-26 16:45:49 · 530 阅读 · 0 评论 -
c语言32位系统和64位系统各种类型的存储大小
原创 2022-04-26 15:59:48 · 808 阅读 · 0 评论 -
c语言常见命名缩写
setjmp.h set jump 省去元音字母jmp_buf jump buffer buffer 取前三个字母,省去了原因字母longjmp long jump 无下划线void first(void) { second(); printf("first\n"); // 不可能执行到此行}花括号地方式头文件 全局变量 函数 之间都是间隔一行EOF:End Of File 取地是首字母SEEK_CUR seek current 难道是名字变量与前原创 2022-04-26 15:54:52 · 857 阅读 · 0 评论 -
程序员编程地修养
1、版权和版本好的程序员会给自己的每个函数,每个文件,都注上版权和版本。对于C/C++的文件,文件头应该有类似这样的注释:/*************************************************************************文件名:network.c文件描述:网络通讯函数集创建人: Hao Chen, 2003年2月3日版本号:1.0修改记录:*******************************************原创 2022-04-24 19:19:46 · 156 阅读 · 0 评论 -
c++ 面试问题
1、c++内置变量以双下划线开头,不对外使用,比如__cplusplus;2、c++函数传值地方式:值传递、值传递,引用传递,引用传递 max(int &a, int &b);引用传递相对于指针地优点:简便,比指针安全;引用传递相对于值传递:不用消耗额外内存;3、虚函数:虚函数主要是为了支持多态;纯虚函数主要为了定义抽象类;func1 方法进行了重写;func2方法是新的函数,与calss a中地 func2不同,且是虚函数;虚函数地作用:提示重写;动态绑定:编译时不原创 2022-04-23 21:53:53 · 254 阅读 · 0 评论 -
成员函数和非成员函数
成员函数:一个类里面定义地函数;非成员函数:不是在类里面定义地函数;那么是选择类的成员函数还是类的非成员函数呢?面向对象则要求是,将操作数据的函数与数据放在一起。但这不意味着要选择成员函数。从封装的角度看,成员函数的moringAction封装性比非成员函数要低。如果某些东西被封装,它就不再可见。越多东西被封装,越少人可以看到它。所以使用非成员函数的类,封装性较低。而越少人看到它,我们就有越大弹性去变化它,因为我们的改变仅仅直接影响看到改变的那些人事物。因此,越多东西被封装,改变哪些东西能力越大。在原创 2022-04-23 15:44:50 · 621 阅读 · 0 评论 -
C++ 重载运算符和重载函数
函数重载在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。即实现了一个函数对不同输入地不同处理;对应于现实世界地:一项处理功能,对于不同地输入,会自动地进行处理。但是处理目标相同;比如说喝水,对应于:碗,杯子,水管,有不同的处理,但是目标是相同的;重载运算符自定义类型的运算符重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,原创 2022-04-23 15:38:43 · 649 阅读 · 0 评论 -
构造函数 & 析构函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面加了个**波浪号(~)**作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。...原创 2022-04-23 15:24:50 · 184 阅读 · 0 评论 -
static关键字及应用
1、本程序页内使用,不同页面的同名变量不会冲突;2、变量生命周期伴随整个程序生命周期;1、静态数据成员也叫作类变量,普通数据成员也叫作实例变量;静态数据成员是每个class都有一份,普通数据成员是每个instance有一份;2、静态成员函数:用于修饰class的成员函数1.静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数。2.非静态成员函数可以任意的访问静态成员函数和静态数据成员。3.静态成员函数不能访问非静态成员函数和非静态数据成员。4.调用静态成员函数,可以用成原创 2022-04-23 15:13:32 · 65 阅读 · 0 评论 -
UML学习转载
第一章 面向对象技术概述软件危机和软件工程控制软件系统复杂性的基本方法:(1)分解对于复杂的软件系统, 可以逐步将它分解成越来越小的组成部分, 直到不能再分解. 如Unix中的shell和管道就采用了分解思想.(2) 抽象当我们用抽象这个概念时, 我们承认正在考虑的问题是复杂的, 但我们并不打算理解问题的全部, 而只是选择解决其中的主要部分, 不去注意那些细节而已.抽象又分为过程抽象和数据抽象(数据类型)在面向对象兴起之前, 编程以过程为中心, 例如结构化设计方法. 然而, 系统已经达到了超转载 2022-04-23 14:56:25 · 773 阅读 · 0 评论 -
面向对象学习
原创 2022-04-23 14:46:07 · 88 阅读 · 0 评论 -
c++ 遇到地问题
1、如何读取超大文件到内存;文件分割;逐行读取;2、mysql地备份方式;数据库文件备份;数据库文件同步;主备同步;3、虚函数和纯虚函数;首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。在基类中实现纯虚函数的方法是在函数原型后加"=0";定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。4、防止忘记释放指针,内存泄漏原创 2022-04-22 18:48:23 · 757 阅读 · 0 评论 -
C++ 信号处理
信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 中。信号 描述SIGABRT 程序的异常终止,如调用 abort。SIGFPE 错误的算术运算,比如除以零或导致溢出的操作。SIGILL 检测非法指令。SIGINT 接收到交互注意信号。SIGSEGV 非法访问内转载 2022-04-20 15:25:50 · 83 阅读 · 0 评论 -
c++关键词
接口 (抽象类)接口可以用来描述一个 C++ 类的行为或功能,但是并不需要对这个类进行实现。一个抽象类的声明里至少要有一个函数作为纯虚函数。在函数形参表后面写上 “= 0” 以指定纯虚函数:建立抽象类 (通常被称为一个ABC) 的目的是提供一个适当的并且其他类可以继承的基类。抽象类不能实例化对象并且只能作为一个接口使用。试图实例化一个抽象类的对象会导致编译错误。数据封装数据封装是一种将数据和使用数据的函数结合在一起的机制;数据抽象是一种只将接口公开并且向用户隐藏实现细节的机制。C++ 支持封装的原创 2022-04-20 11:16:30 · 93 阅读 · 0 评论 -
c++标准之IO库
1.面向对象的标准库2.多种IO标准库工具istream,提供输入操作ostream,提供输出操作cin:读入标准输入的istream对象.全局对象extern std::istream cin;定义于头文件 cout:写到标准输出的ostream对象cerr:输出标准错误的ostream对象。常用语程序错误信息,用于从istream对象中读入输入.从左到右<<,用于把输出写到ostream对象中getline,功能是从istream对象读取一个单词,然后写入string原创 2022-04-19 16:29:07 · 244 阅读 · 0 评论 -
C++ 标准库
C++ 标准库可以分为两部分:标准函数库: 这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。面向对象类库: 这个库是类及其相关函数的集合。C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。标准函数库输入/输出 I/O字符串和字符处理数学时间、日期和本地化动态分配其他宽字符函数面向对象类库标准的 C++ 面向对象类库定义了大量支持一些常见操作的类,比如输入/输出 I/O、字符串处理、数值处理。面向对象类库包含以下内容:标准的原创 2022-04-18 20:32:29 · 698 阅读 · 0 评论 -
C 标准库 - <limits.h>
简介limits.h 头文件决定了各种变量类型的各种属性。定义在该头文件中的宏限制了各种变量类型(比如 char、int 和 long)的值。这些限制指定了变量不能存储任何超出这些限制的值,例如一个无符号可以存储的最大值是 255。库宏下面的值是特定实现的,且是通过 #define 指令来定义的,这些值都不得低于下边所给出的值。宏 值 描述 CHAR_BIT 8 定义一个字节的比特数。 SCHAR_MIN -128 定义一个有符号字符的最小值。SCHAR_MAX 127 定义一个有符号字符的最原创 2022-04-18 20:17:43 · 130 阅读 · 0 评论 -
C 标准库 - <setjmp.h>
简介setjmp.h 头文件定义了宏 setjmp()、函数 longjmp() 和变量类型 jmp_buf,该变量类型会绕过正常的函数调用和返回规则。库变量下面列出了头文件 setjmp.h 中定义的变量:序号 变量 & 描述1 jmp_buf这是一个用于存储宏 setjmp() 和函数 longjmp() 相关信息的数组类型。库宏下面是这个库中定义的唯一的一个宏:序号 宏 & 描述1 int setjmp(jmp_buf environment)这个宏把当前环境保存原创 2022-04-18 20:15:49 · 202 阅读 · 0 评论