c++
enjoy嚣士
一个行走在键盘上的修理工
展开
-
C++ 之 一些优质的开源框架和项目代码
C++优质框架和代码原创 2023-10-11 18:00:03 · 222 阅读 · 0 评论 -
C++之socket 接收发送超时
socket 接收发送超时设置转载 2023-06-30 09:21:57 · 1018 阅读 · 0 评论 -
C++ 之多字节与宽字节相互转换,编码转换
多字节与宽字节转换,编码转换原创 2022-10-09 13:48:52 · 1585 阅读 · 0 评论 -
C++11实现单例模式
c++11 单例模式原创 2022-08-17 16:43:14 · 444 阅读 · 0 评论 -
VS2019创建动态库,包含普通函数,类,C语言函数
VS2019生成动态库并使用原创 2022-08-17 16:39:26 · 1131 阅读 · 0 评论 -
C++ 之 nlohmann::json 一个不错的json库
nlohmann::json实践原创 2022-08-17 16:11:59 · 3305 阅读 · 0 评论 -
C++11 之 生产消费者模式
#include <thread> #include <mutex> #include <condition_variable> #include <list> #include <iostream> class Task { public: Task(int taskID) { this->taskID = taskID; } void doTask(.原创 2021-08-05 14:56:11 · 205 阅读 · 0 评论 -
C++ 之 面对问题,可以逛哪些C++网站?
1. https://en.cppreference.com/w/最常用的网站之一,C++在线参考。很多类型、函数的用法其实都不用刻意去记,忘了在这查,示例都很简洁。这里对知识体系的分类很清晰,很适合用来构建知识框架。若发现对哪块知识不了解,可以在网站上先浏览,然后再根据关键字查询更多的信息。一般来说,基本问题都可以在这解决,但内容都不太深。所以这是一个在你已经学习过大多数C++特性之后,方便随时参考的网站。2. https://stackoverflow.com/so是世界上最大的程序领域问答原创 2021-02-23 14:02:31 · 762 阅读 · 1 评论 -
关于GCC的 __attribute__ ((constructor))
gcc为函数提供了几种类型的属性,其中包含:构造函数(constructors) 和 析构函数(destructors)。程序员应当使用类似下面的方式来指定这些属性:static void start(void) __attribute__ ((constructor));static void stop(void) __attribute__ ((destructor));带有"构造函数"属性的函数将在main()函数之前被执行,而声明为"析构函数"属性的函数则将在main()退出时执行。示原创 2020-12-31 16:57:21 · 693 阅读 · 1 评论 -
c++ 之 柔性数组
今天看到一个有趣的知识点,在这里分享下。可以直接 阅读原文示例代码:#include<stdio.h>struct Test0{ int a; int b; char *c;};struct Test1{ int a; int b; char c[];};int main(void){ printf("sizeof(struct Test0) = %zd\n",sizeof(struct Test0)); pr原创 2020-10-10 18:06:55 · 2129 阅读 · 0 评论 -
C++ 之 printf的格式控制的完整格式
% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少。②-:有-表示左对齐输出,如省略表示右对齐输出。③0:有0表示指定空位填0,如省略表示指定空位不填。④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。⑤l或h:l对整型指long型,对实型指d...原创 2020-05-07 16:03:24 · 647 阅读 · 0 评论 -
C++ 之 可变参数的使用--井号
说明#:字符串化##:字符连接宏展开有顺序,且只展开一次代码#define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #x 举例x##y表示x连接yint n = Conn(123,456); 结果就是n=123456;char* str = Conn("asdf", "adf"); 结果就是 str =...原创 2020-04-27 16:39:20 · 330 阅读 · 0 评论 -
C++ 之 函数入栈规则说明
__cdecl是常规的C/C++调用约定,函数调用后栈的清理工作是由调用者完成的。多数情况使用这个。__stdcall是标准的调用约定,即这些函数将在返回到调用者之前将参数从栈中删除。__fastcall是将左边开始的两个不大于4字节的参数分别放到ECX和EDX寄存器中,速度快。...原创 2020-04-27 16:05:54 · 387 阅读 · 0 评论 -
C++ 之 const修饰的作用
const修饰输入参数:如果输入参数采用指针传递,那么加const修饰可以防止意外地改动该指针,起到保护作用如果输入参数采用值传递,由于函数将自动产生临时变量用于复制该参数,该输入参数本来就无需保护,所以不要加const修饰。const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.const对象的成员是不可修改的,然而const对象通过指...原创 2020-04-27 15:58:15 · 246 阅读 · 0 评论 -
c++ 之 文件操作使用系统函数
打开文件头文件:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int open(const char* pathname, int flags /*文件打开模式*/);int open(const char* pathname, int flags /*文件打开...原创 2020-04-27 15:28:15 · 558 阅读 · 0 评论 -
c++ 之 select函数使用说明
头文件<sys/select.h>int select(int maxfdp, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval*timeout);a. 所有文件描述符最大值加1b. fd_set结构体指针,里面包含文件描述符超时:结构体timeval:定义头文件#include &...原创 2020-04-27 15:21:13 · 10853 阅读 · 0 评论 -
c++ 之处理可变参数
使用va_list 或者springf对可变参数进行格式化处理#include<stdarg.h>#include<stdio.h>void trace_log(const char* format, ...);void trace_log1(const char* format, ...);int main(){ trace_log("%s,%d\n", ...原创 2020-04-27 15:05:12 · 330 阅读 · 0 评论 -
C++ 之 linux环境下路径操作
获取当前运行程序绝对路径#include&lt;iostream&gt;#include"unistd.h"#include"string"using namespace std;int main(int argc,char **argv){ char buf[512]; int length =readlink("/proc/self/exe",原创 2019-03-14 11:51:39 · 1433 阅读 · 0 评论 -
c++ 之 常用的单元测试框架和mock框架
Gtest:(单元测试,Google使用的,社区人多开源)mockcpp:(打桩框架)原创 2020-04-27 10:03:32 · 1773 阅读 · 0 评论 -
linux 之 文件读取效率对比
说明:本实验来自网络,具体出处已经忘了,无法注明原作者,在此表示抱歉本实验针对1000万个整型数据结论:Linux平台上运行程序普遍比Windows上快。Windows下VC编译的程序一般运行比MINGW(MINimal Gcc for Windows)快。VC对cin取消同步与否不敏感,前后效率相同。反过来MINGW则非常敏感,前后效率相差10倍。read本是linux系统函...原创 2020-04-27 10:02:19 · 1030 阅读 · 0 评论 -
文件操作之 C++版本
文件操作C++头文件//标准输入输出流#include //派生自iostream,包括ifstream和ofstream#include 相关类ofstream写操作(输出)的文件类 (由ostream引申而来)ifstream读操作(输入)的文件类(由istream引申而来)fstream可同时读写操作的文件类 (由iostream引申而来)打开文件对这...原创 2020-04-26 18:18:52 · 276 阅读 · 0 评论 -
文件操作 之 C实现
判断文件访问权限头文件 <io.h>int _access(const char *path,int mode ); int _waccess(const wchar_t *path,int mode );返回0成功,-1 失败mode:00 只检查文件是否存在 F_OK01 是否有执行权限 X_OK02 写权限 W_OK04 读权限 R_OK06 读写权限 W_...原创 2020-04-24 17:56:44 · 153 阅读 · 0 评论 -
c++ 之串口通信linux版
串口通信linux版原创 2020-04-22 11:09:30 · 5266 阅读 · 0 评论 -
c++ 之 串口通信windows版
Windows 串口编程原创 2020-04-22 10:53:09 · 3337 阅读 · 8 评论 -
C++ 之 在线编译运行工具
在测试C++不同版本的新特性时,需要不同版本的编译器。这里推荐一个在线编译运行的工具https://wandbox.org/不同的语言选择使用boost库,选择编译器版本...原创 2020-04-19 14:35:10 · 2681 阅读 · 0 评论 -
C++ 类设计流程
通常我们在设计c++类时,需要注意哪些要点:1.构造函数使用初始化列表。2.成员函数该不该加const修饰。3.成员函数传递参数尽量考虑pass by reference,而且要不要加const。4.返回时考虑by value 还是by reference。5.数据放到private里面,提供给外面调用的放到public里面。6.函数在编译器中的组成部分是:函数名+参数+const...原创 2020-03-21 22:23:48 · 707 阅读 · 0 评论 -
C++ 相同class的object互为友元
直接上代码#ifndef __COMPLEX_H__#define __COMPLEX_H__#include <iostream>using namespace std;class complex{public: complex(double a=0, double b=0):re(a),rs(b) { } //这里直接访问传入参数的p...原创 2020-03-21 12:18:45 · 840 阅读 · 0 评论 -
C++ 之 空类和空结构体的大小
本次实验环境Linux localhost.localdomain 2.6.32-642.11.1.el6.i686 #1 SMP Fri Nov 18 18:48:28 UTC 2016 i686 i686 i386 GNU/Linux测试代码#include<iostream>using namespace std;struct aaa{};class bbb...原创 2019-12-26 09:40:42 · 244 阅读 · 0 评论 -
格式化之stringstream类
多的不说,上代码#include <sstream>#include <iostream>using namespace std;/************************************************************************//* 本示例介绍使用stringstream类,方便格式化。与sprintf...原创 2019-04-19 18:04:12 · 266 阅读 · 0 评论 -
g++与gcc混编程序需要注意的问题
extern “C”{}extern “c” {} 的作用就是将函数作为c语言来编译,即编译后的函数名和定义的函数名一样。而c++编译时,因为有函数重载,所以会修饰函数,即编译后的函数名和定义的函数名不同g++链接gcc编译的库报错“undefined reference to xxx”当用extern “c”编译库函数之后,在c++代码中调用时,出现标题错误。解决方法:在包含头文件时,...原创 2019-04-02 16:49:43 · 1028 阅读 · 0 评论 -
c++ 实现http或者https通信
概念http通信的优点很多,当然也有局限性。一般我们开发使用restful形式提供接口,这样可以完成RPC远程调用。https = http + sslssl是一种安全的传输层协议。通信前先建立安全通道,之后在传递数据。libcurl库,一个c写的http库,想要支持ssl,编译时需要加入编译选项。编译库编译windows版的dll链接linux版本的library :...原创 2019-03-09 16:07:23 · 31278 阅读 · 6 评论 -
C++编程之时间处理
Linux 时间类型:time_t、structtm、structtimeval、structtimespec、struct timebtime.h是C标准库的头文件,其余sys开头的都是Linux系统自己的头文件。/usr/include/time.h定义了常用的time函数。到/usr/include/sys目录下查看这几个文件:sys/time.h定义了timezone...原创 2019-02-19 18:38:10 · 2536 阅读 · 0 评论 -
C++ 学习
C++在线代码编辑工具http://cpp.sh/了解C++最新动态https://isocpp.org/C++文件及库介绍https://en.cppreference.com/w/cpphttp://www.cplusplus.com/Boost库介绍http://zh.highscore.de/cpp/boost/C++实现几种设计模式...原创 2019-02-18 11:02:57 · 189 阅读 · 0 评论 -
值得推荐的C/C++框架和库
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz2105...转载 2019-02-18 10:33:12 · 137 阅读 · 0 评论