自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 【C++】使用自定义字面量,少写几句代码

上例使用起来就比较简单,但是,标准库提供的可能也无法满足我们所有需求,还是要自己去定义字面量类似s那些的字面量定义,自己实现上并不复杂,举个简单例子,定义一个和s相同功能的字面量,叫_MSint main()return 1;没报错,能编译,运行结果正常其实,一看operator就明白了,他就是个重载运算符的操作.只不过重载定义字面量是有一定格式和要求的。

2024-01-18 09:31:19 738

原创 【C++】虚函数、虚基类、纯虚函数、抽象类到底怎么回事

从运行中可以发现,父类ccc中调用了abc,这个abc并非base中的abc,而是myclass中的abc,也就是说,子类的abc覆盖了父类的abc,应为base中的abc被定义为虚函数,便被子类的abc覆盖了。可以看到base的构造函数被调用了两次,这个结果,可能是需要的,但大多数情况下可能你不需要,如果不需要,这个时候,就需要用虚基类来解决这个问题。一个简单的场景,假设有两个类,继承了同样一个基类,调用基类的abc,但按照业务需求,abc需要实现不同逻辑,这时,虚函数就有用了,举例如下。

2024-01-18 09:30:50 1023

原创 【C++】变参函数va_start,va_arg,va_end介绍及实现方式

如果写过JS的话,就知道在JS中定义一个函数,就算输入的实参和形参不一致,也可以同过arguments获取参数上例输出1123在C/C++中其实也可以通过一些方式,获取实参中没有定义的多余参数,被称作变参函数。

2023-10-26 17:49:37 569

原创 【C++】C++中那些有点意思,但一般也用不到的替代运算符

事实上这些符号,我们也可以通过宏定义来做到,比如想把括号替换KuoHaoL ,KuoHaoR。以上的运算符都是在C++中语法定义的,实际上在C中就使用宏定义方式,实现了一些。所谓替代运算符无非就是用其他字符或者符号代表一些预定义的运算符和符号。就是这样,花括号可以替换成了为,无非就是换了一个表示方法。要注意的是,在c++17以后,下面几个替换运算符,已经不能使用了。在C++到20可以使用的代用符如下。如果用替代用算符表示的话。

2023-10-20 14:02:58 344

原创 【C++】用constexpr,constinit,consteval让程序跑的快一点

从几个例子其实也可一看出来,这三个关键字的作用,都是为了让可以确定的运算结果,在编译时就首页被执行完毕,这样,运行时等于只是操作一个具体的常量,不会在执行多余的运算,也就提高了一点运行速度。也就是说,被这三个关键字修饰的变量或者函数,即使不使用编译器、程序不运行,也能准确的知道他最终的值.这时候才能使用上述三个关键字功能。

2023-10-18 17:00:34 317

原创 【C++】即时编译jit和xbyak的基本使用介绍

一般来说,解释型编程语言都是依靠自身运行的虚拟机,在解释程序。有时候语言为了提高运行速度,不会去直接解释程序文本,而是模拟cpu执行方式,将文本代码执行一次翻译,翻译为类似cpu执行的汇编语言去执行。有些语言会模拟出几个CPU的寄存器,有些则使用栈的方式模拟寄存器。无论采用什么方式,基本都是循环读取文件的内容,按照一定规则去解释。这也就导致了,运行速度会慢一点,因为cpu最终执行的是虚拟机,而不是编写的语言。

2023-10-12 11:22:55 387

原创 【C++】一个极简单且强大的JSON操作库

今天再介绍一个用于C++操作JSON的库,以前也介绍过相关库,不过使用上稍微的复杂一点,如果常写JS的话,就知道js操作JSON相当的方便其实C++也有一个操作JSON非常方便强大库这个库的使用基本不比JS操作JSON复杂多少,最大的亮点就是不需要依赖,只有一个单文件,文件只有800多K,

2023-06-02 15:12:37 1709

原创 【C++】bsearch函数的使用及二分法查找介绍

bsearch函数的使用及二分法查找介绍

2023-03-06 21:09:48 1451 1

原创 【C++】虽然有用,但也不常用的decltype

从C++11开始,语法里多了一个类型运算符decltype,它可以返回表达式的类型。在C++里有个typeid运算符,也能返回类型,但是decltype和typeid使用上并不太一样,typeid事实上是返回了type_info类型的一个说明,例如以上代码输出struct A但是decltype是直接返回了测试表达式的类型,例如以上代码输出int2。

2022-09-28 09:47:56 670

原创 【C++】不用include,使用C++模块语法实现函数调用

写C++的时候,我们要调用其他文件中的函数或者类这些,一般情况下,就是include一个头文件,或者extern。但在C++20中,有了一个更好的调用方式:使用模块化方式进行调用。如果使用过javascrtip的话,对这种语法看上去就比较熟悉,在javascript中然后就可以在b.js中使用val了C++使用模块,也差不多,可能比在JS中使用还要简便一点,举例如下。

2022-08-21 17:21:13 1439

原创 【C++】setjmp,longjmp的详细使用说明

我们在写C、C++语言的时候,代码在不同逻辑间的跳转是肯定的,一般情况最常用的就是if,switch这些,但是,有些时候,逻辑变得复杂的时候,比如嵌套多层循环,在最内层循环得到结果后,事实上,上面的循环就不重要了,就需要跳出整个循环体,去执行其他业务逻辑,这个时候,如果使用goto语句,去实现就方便很多,比如下例子虽然这么写方便了很多,但是goto语句的使用,尤其是如果大量大使用,会给程序的可读性和流程控制带来很大的负担,使程序难以理解和维护。所以大部分时候,是不建议使用的。...

2022-08-16 16:32:21 1479

原创 【C++】使用WebAssembly在浏览器端操作Excel

使用WebAssembly在浏览器端操作Excel

2022-06-30 18:43:00 1952 7

原创 【C语言】如何正确使用sizeof

sizeof用过吧?你肯定用过,至少你刚开始学C或者C++的时候,学到类型这一节,你一定会写如下代码测试每个类型的长度。 printf("%d", sizeof(int)); printf("%d", sizeof(char)); printf("%d", sizeof(short)); printf("%d", sizeof(long)); printf("%d", sizeof(float)); printf("%d", sizeof(double));对,这就是sizeof

2022-04-18 15:22:36 9952 4

原创 【C语言】static关键字的使用

static关键字大家肯定都不陌生,只要你写过c++,java,c#,或者是js,通常情况下,你肯定要使用到static关键字一般情况下,我们使用它都是用在类中的函数上,或者是函数内的变量,或者类的全局变量,在面向对象的语言当中,使用static无非就为了以下几点内部变量保存、方法的静态调用、变量的静态调用比如我们写C++的时候class abc { public: static int c; static void aaa(){ static int tt =

2022-04-12 10:53:56 1314

原创 C/C++不用free你会释放内存吗?

写C的时候,要申请一段内存,大部分情况,是不是一般都用malloc,比如int *p = (int*)malloc(100);大家都知道,这是分配100个int大小的内存地址,用完以后呢?释放,一定要释放,如果不释放,这段内存会一直保存,如果你的malloc写在循环内,多大的内存最终都能耗尽现在做个测试环境:vs2015,win10写个例子int main(){ int *p = (int*)malloc(100); _CrtDumpMemoryLeaks(); return

2022-04-02 13:05:29 1315

原创 用CSS把文字显示成哆啦A梦

先看一下最终效果左面是最终效果,右面是原图先说说要实现这个效果使用的方法:background-clip一、background-clip介绍background-clip:按照MDN上说的,“设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面”简单的说,就是你设置的背景图片,如何裁剪背景图片,或者说如何填满它所在的容器看例子,现在有这么个样式计算样式如下它的CSS如下p { border: 10px red; border-style: dotted d

2022-04-02 12:58:44 435

原创 用Cmake-js编译C++写的Nodejs扩展

你是不是写nodejs应用的时候,有过属于自己的业务需求,但这个需求你又找不到合适的类库,或者你这个业务需求独一无,根本不可能找到已经写好的类库比如,你要调用一个自己写的DLL里的函数这时候,你就需要用C++写个nodejs扩展了,但是c++又需要编译,这就需要个编译工具了标题Nodejs扩展基本开发按照Nodejs官方文档,编译扩展,两种方式node-gypcmake-js现在,分别简单介绍一下以上两种编译方式1.node-gyp:这个gyp应该都比较熟悉,他是google的一个跨平

2022-03-30 20:01:04 4539

原创 你的C++为什么‘烫‘了,又为什么‘屯‘了?

你是不是有过这样的经历?写C/C++的时候,出现这种奇怪的字符串,比如出现如下字符然后还出现这种字符串你回头一看,最终发现了问题,肯定是下面这两种问题。出现’烫’的时候,是你声明了一个char数组,但是没有赋值任何数据char a[2];出现’屯’,是你声明了char指针,也没有给它任何数据char * a = new char[2];并且,你还是用的编辑器是vs,还是debug模式,我说的对不对?问题出现了,也知道怎么出现的,应该想想为什么出现’烫’,而没有出现’汤’,为什么出现

2022-03-24 21:45:08 3795 4

原创 C++真的能兼容C吗?

今天看到了网上说C是C++的子集,C++可以兼容C,这是真的吗?要弄明白这个问题,首先,先简单介绍一下这两个语言C:C语言是一门面向过程的、抽象化的通用程序设计语言。C语言诞生于美国的贝尔实验室,C语言之所以命名为C,是因为他的前身是B语言,经过多年发展,最终在1972年,正式推出。C++:C++是一种高级程序设计语言,1979年,本贾尼·斯特劳斯特卢普,对C进行了改良工作,改良后,该语言被正式命名为C++。以据以上介绍,C++确实是从C改进而来,但是,它真的能和C兼容吗?也就是网上说的

2022-03-20 20:47:44 10087 9

原创 一个简单的C++操作Excel的方案

因为工作的关系,我需要时常操作一下excel的数据,按照一定的格式加工原文件中的数据后,搞到另一个excel中然后搜索了不少excel操作的开源类库,但搜到的代码要么就是需要第三方库配合,要么就是功能过于强大,导致使用成本较高最终,找到一篇2006年的文章BasicExcel - A Class to Read and Write to Microsoft ExcelBasicExcel,一个读写Excel的类一.基本介绍BasicExcel 是一个非常简单的操作Excel的库.

2022-03-18 21:29:22 21685 17

原创 自己去创建一个编程语言吧(7)

3.USE use_expression_list ';'接着看下一个use_expression_list,这个是表示使用哪个模块,应为一个包中可以定义多个模块,但并非包中所有模块都有用,所以,使用use关键字定义要使用某个模块看bison定义,use_expression_list:IDENTIFIER { StatementList *ls = (StatementList*)parm; ls->AddUseModuleList($1); } |use_expressi

2021-10-15 16:44:41 1499 1

原创 【漫画】不同性格程序员遇到产品经理

2021-10-02 18:24:34 1139 17

原创 30 个有用的正则表达式代码片段

正则表达式是一个强大的工具,这应该在每个开发人员的工具带中。它们可以根据非常复杂的参数匹配一串字符,这可以在构建动态网站时为您节省大量时间。开发人员面对不同的代码,但许多代码保持相同,正则表达式有个陡峭的初始学习曲线,但当你正确使用的时候,他是非常有用的最棘手的部分是学习语法并学习如何从头开始编写自己的正则表达式代码。为了节省时间,我组织了 30 个不同的正则表达式代码片段,您可以将它们合并到开发项目中。而且由于正则表达式不限于单一语言,您可以将这些片段应用于从JavaScript到PHP或Python

2021-09-27 09:48:59 356

原创 【漫画】当C语言遇到其他语言

2021-09-26 09:32:43 1481

原创 要实现一个死循环是使用for(;;)还是while(1)?

以下代码在VS下测试有时候,我们需要写个死循环,执行重复命令,要么写for,要么就while,还有goto,不过goto能不用则不用不过,for( ; ; ),while(1)哪一种更好呢?上代码for (;;){ printf("1");}先看for debug模式下的汇编可以看到直接上去就是打印“1”,然后JMP 跳回 B619EE,比较简单再看whiledebug模式下的汇编while (1){ printf("1");}可以看到打印·“1”前,先执行了test.

2021-09-17 16:08:40 584

原创 自己去创建一个编程语言吧(6)

上次把三个基本的类型说完,这就能开始搞了先从开头BISON最开头看起start:run_statement |start run_statement ;这个形成了一个递归,就是为了找到run_statement,这个表达式run_statement:import_expresson |moduledefine |USE use_expression_list ';' |wmain_definition ;这一段定了整个menthol最顶层

2021-09-13 10:27:53 2806

原创 const int,int const,const int*,int const*,int* const有什么不一样?

就这几种。有啥不一样? const int a; int const b; const int* a1; int const* c1; int* const首先,要明白一点,const 这个关键字,实在编译期间作用的,用来判断被修饰对象是否可以被修改,编译以后,程序本身没有关于这个关键字的运行方式,也就是说,程序执行时,变量进入寄存器或者内存中,本身不具有是否可读写属性。所以在编译期间就会发现程序是否编写错误怎么理解上面的const 呢?可以把const 看作是用来修改变量类型的,比如.

2021-09-10 10:05:15 4074 3

原创 为啥我的char[]能修改char*却不行?

少扯淡没用的,直接上代码int main(int argc, char *argv[]){ char p[74] = "abcefghijkmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"; char *a = "abcefghijkmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"; printf("%s,%s",p,a);}这谁都能

2021-09-07 20:36:12 965 1

原创 自己去创建一个编程语言吧(5)

行求,不多说话,开干从bison开始咱们先定义语言要用到的几种数据类型typedef struct YYSTYPE{ string vSTRING; //字符串类型 int vINTEGER;//整数类型 double vDOUBLE;//double类型 struct CompileStruct* vCompileStruct;//编译结构 Statement* vStatement;//语法结构} YYSTYPE;够了,就这几种就可以了,以上类型除了定义语言中需要用的类型,这

2021-09-06 21:18:16 1135

原创 自己去创建一个编程语言吧(4)

从本节开始,要写代码了,我会把我开发menthol的所有过程,详细的写出来1.开发语言的选择开发一个编程语言,作为开发这个语言所使用的开发语言,可选择性比较多,比如java、c#,还有运行在服务器上的JS 都没有问题。但作为一个编程语言,需要考虑的是程序的稳定、效率、和使用的便捷性、运行环境等,使用JAVA,C#等语言固然可以降低开发的难度,但效率和运行环境就有了一些限制,这些语言本身是运行在一个虚拟的环境中,也就是说,当你开发完一个新的编程语言后,要运行它,还需要把开发他的环境也运行才可以,这样,你

2021-08-05 14:59:23 3845

原创 自己去创建一个编程语言吧(3)

上一节讲了flex,今天咱们讲bisonflex是分析词法的,例如你的关键字、操作符号等,bison是分析语法的,就是你定义的语法方式,也就是说,把你定义的关键字、符号这些东西按照一定的格式排列后,需要表达的意思Bison和Flex在语法方面非常相似,一般把这种语法叫做BNF在介绍Bison前,我们先简单说说BNF##1.什么是BNF文法BNF是 Backus-Naur Form 的缩写,中文叫巴科斯范式,它是用来描述计算机语言语法的符号集在BNF文法中尖括号(<>)内包含的为必选

2021-07-20 19:40:37 1716 1

原创 自己去创建一个编程语言吧(2)

上一节中,你已经定义好了语言风格,和关键字、运算符。现在就可以开始编写代码了。编写代码的主要作用是分析源代码,分析其中的逻辑,按照你定义的逻辑方法进行执行,分析过程,比较复杂,所以,要采用工具简化分析过程首先要下载Win flex-bison,下载地址https://sourceforge.net/projects/winflexbison/下载解压后,直接解压,大概的文件如下图...

2019-05-09 17:42:55 3871 2

原创 自己去创建一个编程语言吧(1)

你一定有过这种困惑,一直想要找到一个完全适合自己编码风格,开发习惯的语言。却发现每一个语言各有优略,没有哪个能完全适合你的…或者你看到现在层出不穷的各种编程语言,难道就没有想装个逼,自己搞一个玩玩的冲动?爱装逼的人都拥有同样的气质,所以,我就尝试自己创建了一个编程语言------------Menthol所以,你也不用想了,自己开发一个吧。下面我将以我创建Menthol语言过程为例子,...

2019-05-08 17:57:53 16306 2

翻译 使用AMPPS设置本地服务器

原文发布于 https://www.hongkiat.com/blog/ampps-server/MAMP是OSX中运行本地服务器的最受欢迎的应用程序之一,对于Windows用户来说,WAMP或XAMPP可能是使用最广泛的选项。 这3个应用程序足以完成这项工作。 但是,如果有另一种工具可以让开发人员的工作更快更有效,我们就会抓住这个机会最近,我们遇到了一个名为AMPPS的应用程序。 它包含...

2019-02-11 10:52:20 3046

翻译 18个免费替代Photoshop的图像编辑软件

原文发布于https://www.hongkiat.com/blog/11-free-alternatives-softwares-to-adobe-photoshop/Photoshop是最全面的图像编辑和图形设计软件。 但是所有这些功能也使你的系统变得更加庞大。 特别是,如果你仅仅只是需要一个只具有日常图像编辑基本功能的工具,那么去使用Photoshop肯定不是明智的选择。所以,你可以...

2019-01-17 13:41:15 31283

翻译 Voca 一个javascript字符串操作库

Voca是一个javascript字符串操作库v.camelCase('bird flight'); // =&gt; 'birdFlight'v.sprintf('%s costs $%.2f', 'Tea', 1.5); // =&gt; 'Tea costs $1.50'v.slugify('What a wonderful world'); // ...

2019-01-15 18:21:31 921

原创 用logstash收集nginx日志,并输出至node.js API

最近在做日志系统,一直在研究logstash+elasticsearch的实现方案。logstash是一个文本内容的收集工具,elasticsearch是一个检索引擎,理想状态下,logstash收集并且整理好的内容,发送到elasticsearch的索引内,可以实现全文检索logstash,和elasticsearch的配置相对都简单,你只要在本机安装了java环境后,再去https://w...

2019-01-11 12:41:56 842

原创 cJSON-使用简单且功能强大的JSON解析库

用C++处理JSON的库有很多,JSONCPP,json-parser,Jansson…太多了不过我们搞程序开发,不一定需要一个库有多么强大的功能,但是这个库一定要能满足我们的要求,同时,开发起来要简单,最好不要增加我们的开发负担和学习负担。我在开发menthol语言的JSON模块处理时,发现了一个简单、易用的JSON处理库-CJSON看它的官方介绍Welcome to cJSON. c...

2019-01-09 17:52:21 2678 1

原创 deelx-使用C++开发而成的一个优秀的正则表达式库

deelx是一个C++写成的非常优秀的正则表达式库,我在开发menthol语言时,Regex模块就是采用了deelx。对于deelx官方说法:deelx 是一个在 C++ 环境下的与 Perl 兼容的正则表达式引擎。是 RegExLab 开展的一个研究开发项目。基本特点:支持与 Perl 兼容的正则表达式语法。支持 IGNORECASE, SINGLELINE, MULTILINE 等...

2019-01-08 18:04:56 1681

原创 手机程序员常说的webview到底是个啥东西

好像安卓和IOS程序员最常说的关于他们专业的名词就是webview,但是这个webview到底是个啥玩意?先从安卓程序员用的webview入手,就几个webview的函数 WebView.loadUrl("http://www.ltplayer.com");// 加载url,也可以执行js函数 WebView.setWebViewClient(new SafeWebViewClien...

2019-01-04 21:06:14 24763

一个简单的C++操作Excel的方案文章测试代码

一个简单的C++操作Excel的方案文章测试代码 https://blog.csdn.net/weixin_44305576/article/details/123584575

2023-12-06

使用c++编写WebAssembly在浏览器端操作Excel demo

使用C++,cmake编写 WebAssembly在浏览器端操作Excel 的一个demo 代码为博客实例代码 https://blog.csdn.net/weixin_44305576/article/details/125545900

2022-07-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除