![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++库学习
文章平均质量分 57
NxxCalm
坚持编程
展开
-
sizeof用于计算数组长度时注意
https://www.geeksforgeeks.org/sizeof-operator-c/可用于数据类型或表达式(包含变量),不属于任何头文件,编译器内置操作符,编译时用常数值替换sizeof,不是运行时计算的当用于数据类型时,返回该类型在内存中占用的字节数。(sizeof(int ) === 2)当用于表达式时,返回表达式值占用的字节数注意可用于计算数组大小,sizeof(arr) / sizeof(float) //arr size: 5可用于动态申请内存块,int * .原创 2022-02-03 00:35:47 · 670 阅读 · 0 评论 -
c++源码工具
c++/c源代码查看辅助工具unifdefhttps://docs.oracle.com/cd/E75432_01/html/E71066/unifdef-1.html解析删除C程序源中经过ifdef的行,非系统自带要安装命令格式:unifdef [-clt] [-Dname] [-Uname] [-iDname] [-iUname] … [filename]–c 正常操作补充。将被删除或留空的行会得到保留,反之亦然–l 使用空白行代替删除的行–t 纯文本选项。unifde原创 2021-11-04 21:00:31 · 644 阅读 · 0 评论 -
多继承与Mixin比较
参考《c++ primer》参考《松本行弘的程序世界》面向对象有抽象封装,继承,多态三大特性抽象封装通过private,public等控制数据和方法的访问,并将实现和调用分割继承(c++为例)数据和普通方法继承情况class Base {public: string name; Base() { name = "base class"; } void print() { cout << this->name << endl; }};cla.原创 2021-08-29 18:56:23 · 239 阅读 · 0 评论 -
可变参数vs可变模板巧用
https://eli.thegreenplace.net/2014/variadic-templates-in-c/可变参数scanf函数和printf函数参数是可变的,可选参数的类型可以变化,可选参数的数量也可变化,可选参数前面必须至少有一个强制参数(确定参数)声明和定义时,强制参数后面跟着一个省略号…代表可选参数函数内部,使用stdarg.h头文件中相关结构方法获取参数va_list类型变量用来接受可变参数列表,va_start宏来初始化va_list变量va_arg宏和va_lis.转载 2021-08-02 20:12:25 · 231 阅读 · 0 评论 -
从multiple definition编译错误学习include预处理机制
multiple definition想在头文件中声明定义全局变量,使用#ifndef TEXT保护防止重复定义,结果报了multiple definition// a.h#ifndef A_H_#define A_H_#include <stdio.h>#include <stdlib.h>#ifndef TEXT#define TEXT 1void (*custom_exitfunc)(int) = &exit; // from stdlib.h原创 2021-07-27 19:25:58 · 261 阅读 · 0 评论 -
gflags中宏定义和模板高手用法
预备知识宏定义__STDC_FORMAT_MACROS64位整数,在32位系统中是long long int,在64位系统中是long int64位整数printf打印,在32位系统中是lld,在64位系统中是ld跨平台打印方案,printf("%" PRId64 "\n", value) \\long int value(64位) long long int value(32位),PRId64在inttypes.h中定义这个设计是给c用的,c++定义一个__STDC_FORMAT_MACROS原创 2021-07-15 23:48:33 · 323 阅读 · 0 评论 -
webbench中套接字 进程 通信 信号相关编程
https://docs.scrapy.org/en/latest/intro/tutorial.htmlhttps://github.com/qianlizhixing12/webbenchc++重构webbench,学习socket编程,fork进程,进程间通信socket网络编程static int Socket(const string &host, int port) { // sockaddr_in struct sockaddr_in ad; memset(&a.原创 2021-07-06 16:52:13 · 65 阅读 · 0 评论 -
重构Webbench学习http代理请求实现
重构Webbench学习http代理请求实现http proxy代理请求实现方式https://datatracker.ietf.org/doc/html/rfc7230https://datatracker.ietf.org/doc/html/rfc7231https://datatracker.ietf.org/doc/html/draft-luotonen-web-proxy-tunneling-01普通代理,代理服务器充当中间人,客户端–》代理–》服务端隧道代理,基于http的co原创 2021-07-04 20:54:13 · 275 阅读 · 0 评论 -
getopt命令行解析
getoptint getopt(int ___argc, char *const *___argv, const char *__shortopts)处理短格式命令选项argc,argv取自main函数argc,argvshortopts短格式命令选项定义,如ht:v::(:表示t后带参数,::表示v后可带可不带参数),-h -t 30 -v返回命令项,如’h’,‘t’,‘v’带参数选项用optarg获取选项,未定义返回’?'并输出提示信息在while循环中解析完参数返回-1(EOF)ge原创 2021-07-02 15:50:15 · 260 阅读 · 0 评论