码莎拉蒂 .
这个作者很懒,什么都没留下…
展开
-
史上最全的Visual Studio Code安装C/C++环境,若不行头砍给你。
一、下载Visual Studio Code安装下载链接地址二、安装C/C++插件 输入c/c++, 然后点击那里install 三、下载MinGW配置环境变量 下载地址 进入网站后不要点击"Download Lasted Version",往下滑,找到最新版的 "x86_64-posix-seh"。 ...原创 2021-06-30 23:43:59 · 3789 阅读 · 134 评论 -
C语言之#和##和__VA_ARGS__和##__VA_ARGS__
1、问题看到代码宏里面很多##__VA_ARGS__不知道什么意思2、直接写测试代码#include <stdio.h>#define my_printf(x) printf(#x" is %d\n", x)#define my_printf1(x) printf("value is %d\n", x##x)#define my_printf2(......原创 2019-06-22 21:05:12 · 4951 阅读 · 4 评论 -
C语言之字符数组在if{}里面赋值给char *引发的问题
1 问题我的buff在if{}里面,然后对buff进行内存操作,最后赋值给char *类型的url,发现url最后没有得到数据如下代码#include <stdio.h>#define TRUE 1void set_value(char *p){ *p = 'c'; *(p + 1) = 'h'; *(p + 2) = 'e'; *...原创 2019-06-15 00:48:29 · 3593 阅读 · 0 评论 -
C语言之去掉https链接的默认443端口
1问题去掉https链接的默认443端口2代码实现#include <stdio.h>#include <string.h>#include <stdlib.h>#define BOOL int#define TRUE 1#define FALSE 0/* *判断字符串str1是不是str2开头 */...原创 2019-06-13 23:13:25 · 3831 阅读 · 0 评论 -
编译C程序提示之'for' loop initial declaration used outside C99 mode"
1 问题再gcc编译一个c程序的时候,错误提示如下for' loop initial declaration used outside C99 mode2 原因c99是允许在for循环中声明变量的,但是如果使用的标准为c99之下的话,则不允许这么做,这里我是在for循环里面定义了变量如下for (int i = 0; i < 10; ++i)...原创 2019-06-02 00:21:13 · 15720 阅读 · 4 评论 -
linux c之遍历字符串数组
1问题比如我们要遍历字符串数组,我们的思路一般是先求字符串数组的长度,然后再用for循环便利,其实没必要这样,我们直接在字符串数组后面加上个NULL就行再去遍历2代码实现#include <stdio.h>int main(){ static const char *data[] = {"chen", "yu", "hello...原创 2019-02-27 22:45:58 · 5426 阅读 · 0 评论 -
C++之智能指针和普通指针单例模式两种实现
1 问题实现c++的单例模式,这里测试分别写了通过智能指针返回对象和普通返回指针2 代码测试include <iostream>#include <mutex>#include <memory>using namespace std;class Single{public: static Single&am...原创 2018-11-08 02:20:03 · 5760 阅读 · 0 评论 -
C++编译之提示ld: can‘t open output file for writing: test1, errno=21 for architecture x86_64
1 问题在mac 终端写了一个cpp文件,然后用命令编译运行提示错误如下1111deMBP:code a1111$ g++ -std=c++11 test1.cpp -o test1ld: can't open output file for writing: test1, errno=21 for architecture x86_64clang: error: linker co...原创 2018-11-08 00:22:17 · 8169 阅读 · 2 评论 -
C++之智能指针std::shared_ptr简单使用和理解
1 智能指针std::shared_ptr相关知识和如何使用我们这里先说下智能指针std::shared_ptr,因为我看到我我们项目c++代码里面用得很多,我不是不会,所以记录学习下先让ubuntu终端支持c++11,如果自己的电脑还没配置号,可以先看下我的这篇博客linux之让终端支持C++11/14编译cpp文件1) 所在的头文件#include <memo...原创 2018-11-04 00:52:43 · 58728 阅读 · 16 评论 -
C语言之在结构体里面放很多函数指针
1 原因看了open ssl代码里面很多在结构体里面放很多函数指针,然后再来调用,这样比较规范和统一2 代码实现#include <stdio.h>#include <assert.h>#include <stdlib.h>#include <string.h>#include <pthread.h...原创 2018-09-08 19:33:34 · 4172 阅读 · 0 评论 -
open ssl里面的自定义get***函数失效
1 问题在open ssl加载引起里面部分我自己写了一个get和set方法,然后我在其它地方调用使用了Info类型的声明extern Info info;先初始化info,然后info->setA(&info, value);char value[100];但是我立马info->getA(&info, value, sizeof(val...原创 2018-09-05 21:37:33 · 2179 阅读 · 0 评论 -
C++之STL之priority_queue
1、priority_queue介绍priority_queue 是优先队列模板声明带有三个参数,priority_queue<Type, Container, Functional>Type为数据类型,Container为保存数据的容器,Functional为元素比较方式Container必须是用数组实现的容器,如 vector, deque不能用list,STL里面容器默认用的是v...原创 2018-01-23 22:09:50 · 2447 阅读 · 0 评论 -
C++之greater和less
1、greater、 less他在头文件里面,greater和less都重载了操作符定义如下:// TEMPLATE STRUCT greatertemplatestruct greater : public binary_function{ // functor for operator> bool operator()(const _Ty& _Left, const _Ty原创 2018-01-23 20:55:19 · 17323 阅读 · 0 评论 -
C/C++之内存对齐
1、什么是内存对齐计算机系统对基本类型数据在内存中放的位置做了限制,它们会要求这些数的首地址是一个数(一般为4和8)的整数倍,我们看下结构体的大小#include struct A{ char a; int b;};int main(){ printf("size of struct A is %d\n", sizeof(struct A));原创 2017-12-17 17:11:47 · 2369 阅读 · 0 评论 -
C++之inline函数
1、为什么需要inlineC中的宏没有调用,参数压栈、返回操作所以比函数快,但是有参数副作用,inline为了取代这种表达式形式的宏定义,它消除了宏定义的缺点,同时又很好地继承了宏定义的优点。2、inline如何使用以及特点1)、inline一般写在C++函数定义的前面,一般主要是长度不长经常调用的函数,比如inline void f(){原创 2017-12-10 15:51:35 · 2424 阅读 · 0 评论 -
C和指针之字符串简单实现strchr、strcmp函数
1、问题简单实现strchr、strcmp函数2、代码实现#include #include /**简单模拟strchr函数**/char *my_strchr(const char *des, int ch){ if (des == NULL) return des; while (*des != '\0') { if (*de原创 2017-11-23 21:27:39 · 2655 阅读 · 0 评论 -
java和C++之单例类双重检查加锁
1、Javapublic class Singleton { private volatile static Singleton instance; public static Singleton getInstance () { if (instance == null) { synchronized (Singleton.class)原创 2017-10-25 01:16:32 · 2442 阅读 · 0 评论 -
C语言之sprintf使用总结
1、问题在open ssl 里面输出16进制的随机数uint8_t *client = NULL;client = ssl->s3->client_randomfor (int i = 0; i < 32; i++){ printf("client_random is %02x\n", client[i]);}但是这样输出都是一个一个的打印,我需要连接在一原创 2017-09-13 20:37:00 · 2698 阅读 · 0 评论 -
C语言之如何输出uint32_t和uint64_t和16进制
1、输出uint32_tuint32_t a = 888;printf("a is %ld", a);2、输出uint64_tuint64_t b = 888;printf("b is %lu", b);printf("b is %lld", b);3、输出16进制int c =16;printf("c is 0x%08x", c)原创 2017-09-11 22:27:18 · 71173 阅读 · 2 评论 -
C语言之unsigned char和uint8_t
1、问题今天搞openssl里面的客户端和服务端生成的随机数时候,PC端用的uint8_t数据类型,我用的是unsigned char类型,特么这不日了狗,不一样,后来问了pc端的人,和到网上查了下他们的区别2、解释unsigned char 是8位uint8_t是8位一般理解就是它们没什么区别,用uint8_t更加健壮3、总结下次看原创 2017-09-09 20:13:14 · 23071 阅读 · 0 评论 -
C语言之strstr函数类似Java字符串的contain函数
1、strstr函数介绍找出haystack字符串在needle字符串中第一次出现的位置(不包括needle的串结束符)。返回该位置的指针,如找不到,返回空指针。2、举例3、运行结果原创 2017-09-08 21:06:41 · 4542 阅读 · 0 评论 -
C语言之常见错误解决办法
1、问题1)、忘记写constchar* p = string.c_str()char* p = string.data();自己傻逼了,编译不过,应该这样写,不要忘记加上constconst char* p = string.c_str();const char* p = string.data();2)、const char*p 转 char* pc原创 2017-08-18 20:55:50 · 2877 阅读 · 0 评论 -
C++之函数指针实现函数回调
1、问题C++很多地方需要函数指针回调,但是我理解还是不够深刻,今天再写了测试例子,方便后面更深入理解和记忆。2、代码实现A.h 文件实现//// A.h// TestC++//// Created by 1111 on 17/8/17.// Copyright © 2017年 sangfor. All rights reserved.//原创 2017-08-17 01:43:19 · 2681 阅读 · 0 评论 -
C语言之获取32字节随机数的字符串
1、问题获取32字节随机数的字符串2、代码实现#include <stdio.h>#include <time.h>#include <stdlib.h> #define SIZE 32 void get_rand(char *p, int length) { char value[10] = "01234...原创 2017-08-16 20:50:21 · 5003 阅读 · 2 评论 -
C语言之最好理解的通过函数指针作为参数实现回调函数
1、函数指针回调解释回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数2、代码实现#include <stdio.h>int sub(int a, int b);int sub1(int a, int b, int (*sub)()){ ...原创 2017-08-01 01:58:55 · 6581 阅读 · 3 评论 -
C/C++之常用字符串比较总结
1、std::string比较我们一般用str1.compare(str2) == 0来实现2、const char* 的比较我们一般用strcmp(p1, p2) == 0来实现3、代码4、结果str1 == str4str5 is nullp1 == p3原创 2017-07-28 19:56:24 · 3196 阅读 · 0 评论 -
LeetCode之字符串(C++)的切割简单实现
1、问题C++字符串的切割2、代码#include #include #include std::vector splite(const std::string &value, const std::string &pattern) { std::vector result; if (value == "") { retur原创 2017-07-27 23:30:43 · 2835 阅读 · 0 评论 -
C++之用std::nothrow分配内存失败不抛异常
1、std::nothrow介绍1).malloc分配时,如果内存耗尽分配不出来,会直接返回NULL;2.)早期C++版本,new分配时,如果内存耗尽分配不出来,也会直接返回NULL;我们可以使用关键字nothrow,来使得程序不抛一场2、举例说明一个没有用nothrow,用了try捕获,一个用了nothrow结果:结果:原创 2017-06-29 22:10:05 · 3625 阅读 · 0 评论 -
C语言之加入头文件<stdbool.h>可以使用true和false
1、头文件介绍(1)使用了后,可使用true和false来表示真假。(2)在循环语句中进行变量声明是C99中才有的,因此编译时显式指明 gcc -std=c99 prime.c2、最简单的例子3、结果展示原创 2017-06-07 10:38:30 · 20023 阅读 · 0 评论 -
C和C++之用extern “C“实现它们之间的互调
1、extern "C"的解释 一个C++程序包含其它语言编写的部分代码。C++编写的代码片段可能被使用在其它语言编写的代码中,不同语言编写的代码互相调用是困难的,甚至是同一种编写的代码但不同的编译器编译的代码。例如,不同语言和同种语言的不同实现可能会在注册变量保持参数和参数在栈上的布局,这个方面不一样。 为了使它们遵守统一规则,可以使用extern指定一个编译和连接规原创 2017-06-06 21:38:17 · 2455 阅读 · 0 评论 -
C++之undefined reference to “ssl::first::first()“
1、错误只写了一个简单的C++继承类,就出现了这个错误undefined reference to "ssl::first::first()"2、原因我在second类里面继承了first类,但是在first类里面,我把构造函数写成了first();然后这个函数有没有实现,所以导致找不到first()这个函数3、改正把原创 2017-06-06 12:02:25 · 2433 阅读 · 0 评论 -
C++之函数的默认值参数说明
1、思考今天看到C++代码的时候,发现文件里面的函数定义和实现都有3个参数,特码调用的时候只有2个参数了,日了狗,java里面好像没有这种方式,后来才发现是默认参数2、代码实现3、展示结果4、总结注意默认参数需要写在函数的最右边,不是在左边,要记住原创 2017-05-23 20:08:52 · 2659 阅读 · 0 评论 -
C++之map插入数据相同的key不能覆盖value解决办法
1、问题C++里面,如果map里面插入之前的,如果key在map里面有的话,不会覆盖之前的value,一般先判断之前有没有数据,有的话先删除,然后再去添加。2、代码实现3、运行结果原创 2017-05-23 19:21:59 · 22480 阅读 · 0 评论 -
C语言之rand()和srand()函数
1、rand()、srand()函数介绍srand 初始化随机种子,rand 产生随机数定义函数:int rand(void)函数功能:产生随机数函数说明:rand的内部实现是用线性同余法做的,不是真的随机数,因为其周期特别长,一定的范围里可看成是随机的。rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须用srand()设好随机数种子,如果原创 2017-05-22 23:11:20 · 3843 阅读 · 0 评论 -
C语言之理解(*(void (*)())0)()和signal函数
1、需要理解的表达式计算机启动的时候,硬件将要调用首地址为0位置的子例程,表达式如下(*(void (*)())0)();2、解释我们知道void (*f)() f是指向返回值为void类型的函数因此,(void (*)())表示指向返回值为void类型的函数的指针的类型强制转换符我们调用函数指针的时候一般这样使用 (*f)() 在ANSI C标准原创 2017-05-21 23:22:23 · 2722 阅读 · 0 评论 -
C/C++语言之通过定义指针函数方式来实现在一个cpp文件里面获取另外一个cpp文件函数的返回值
1、定义指针函数typedef int (* fun) ();static fun f;2、代码实现3、结果4、总结我们可以这样使用在a.h文件里面里面定义函数指针,并且有个传递函数指针的方法typedef std::string (*fun)();void f2(fun f 1);原创 2017-05-14 23:37:02 · 4408 阅读 · 0 评论 -
C++之goto
1 gotocode:result:原创 2017-05-06 20:20:28 · 2539 阅读 · 0 评论 -
C之memset、memcpy、strcpy、strncpy区别
1 memsetmemset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘\0’, memset可以方便的清空一个结构类型的变量或数组。char a[100];memset(a, '\0', sizeof(a));struct student{ char name[16]; int age;};struct原创 2017-05-06 17:48:27 · 3085 阅读 · 0 评论 -
C++之typename
1、typename和class在模板前,typename和class没有区别template class A;template class A;typename和class对编译器而言却是不同的东西2、声明一个类型看下面的代码我们编译下结果如下编译器不知道T::const_iterator是个类型。如果它是个变量呢? T::cons原创 2017-03-22 17:39:56 · 2428 阅读 · 0 评论 -
C++之operator关键字(重载操作符) 使用总结
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,一、为什么使用操作符重载简单的说我们基本数据比如int float 都可以比较大小 有>、、二、实现重载的操作符先看简单代码类成员函数实现重载和非类成员函数(全局函数)1)、操作符重载实现为类成员函数重载的操作符在类体中被声明,声明方式如同普通成员函数一样,只不原创 2017-03-22 15:48:47 · 11583 阅读 · 0 评论