C/C++
poinsettia
这个作者很懒,什么都没留下…
展开
-
Cmake Note
记录自己的一点小总结,不一定对,啥时候发现不对,啥时候是改吧。原创 2023-02-17 13:34:12 · 97 阅读 · 0 评论 -
[windows] cmake 如何设置 需要使用的 dll
cmake 如何设置需要使用的dll原创 2023-02-17 13:14:06 · 1763 阅读 · 1 评论 -
利用cmake 编译静态库并完成install
利用cmake 编译静态库并完成install原创 2023-02-06 13:48:46 · 329 阅读 · 0 评论 -
如何用多个static lib 生成到一个static lib
cmke:如何用多个static lib 生成一个static lib原创 2023-02-02 14:59:55 · 805 阅读 · 0 评论 -
利用预编译功能快速解 C/C++中的宏定义
利用预编译功能快速解 C/C++中的宏定义背景在看代码的时候,常常会遇到复杂的宏,点来点去不知道这个宏到底在做什么,本文介绍一下如何利用预编译功能快速解C/C++中的宏定义。举例在代码中看到了一个宏EXAMPLE_MODEL_2_JSON(),但是不知道这个宏到底是做什么。那么可以新建一个 C/C++文件,把相关的宏都拷贝过来,保存在文件里。#define EXAMPLE_MODEL_2_JSON(...) MODEL_2_JSON(EXAMPLE_MODEL_DEFAULT_PARAM, ##_原创 2022-02-25 10:13:36 · 460 阅读 · 0 评论 -
【资源分享】学习 cmake 最好的资源,没有之一~
https://cgold.readthedocs.io/en/latest/overview.html : CGold: The Hitchhiker’s Guide to the CMake原创 2022-02-06 16:04:46 · 369 阅读 · 0 评论 -
一个简单的可以编译的gmock实例,可以用来测试一些不确定的关键字
源码从 https://github.com/google/googletest/blob/master/googlemock/test/gmock-function-mocker_test.cc 裁剪得来#include "gmock/gmock.h"#include "gtest/gtest.h"namespace testing {class FooInterface {public: virtual ~FooInterface() {} virtual int RefQ原创 2021-05-17 20:13:51 · 315 阅读 · 0 评论 -
析构函数中不可以使用shared_from_this()
参考:https://www.icode9.com/content-4-492133.html析构函数中不能直接使用 shared_from_this()#include <memory>#include <iostream>struct A : public std::enable_shared_from_this<A>{ ~A() { auto this_ptr = shared_from_this(); // std::b原创 2021-05-17 14:27:28 · 641 阅读 · 0 评论 -
GCC Compile Flow
General Flow#mermaid-svg-3KN34NdG3Lb2pfte .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-3KN34NdG3Lb2pfte .label text{fill:#333}#mermaid-svg-3KN34NdG3Lb2pfte .node rect,#mermaid-s原创 2021-05-15 23:37:10 · 340 阅读 · 1 评论 -
GCC头文件搜索路径查看方法
Cgcc -xc -E -v -C++gcc -xc++ -E -v -The following is the result of executing cmd g++ -xc++ -E -v -这里我有个大大的疑惑,为什么执行g++命令,调出来的都是clang编译器的信息???原创 2021-05-13 22:37:45 · 2809 阅读 · 1 评论 -
GCC,gcc,g++
https://www.cnblogs.com/wb118115/p/5969775.html看的Linux公社的一篇文章,觉得不错,内容复制过来了。其实在这之前,我一直以为gcc和g++是一个东西,只是有两个不同的名字而已,今天在linux下编译一个c代码时出现了错误才找了一下gcc和g++的区别。先描述一下今天遇到的错误:因为以前写程序的时候,写的都是cpp文件,然后就直接使用g++编译,没出错,也就没有在意过这些问题,今天有一个c文件,但里面包含后STL中的vector语法,想着使用gcc来编转载 2021-05-13 20:42:25 · 152 阅读 · 0 评论 -
即使一个类对象指针为nullptr,仍然可以使用该对象去调用类中的函数。
#include <iostream>using namespace std;class A {public: void demo() { cout << "A::demo is called" << endl; }};class B {private: A* a;public: B() { a = nullptr; a->demo(); }};int m原创 2021-01-17 20:44:46 · 749 阅读 · 0 评论 -
STL中各种数据结构的查找时间复杂度
原创 2021-01-17 14:56:48 · 812 阅读 · 0 评论 -
C++核心准则边译边学-X.4:使用span解决数组退化和越界访问
数组是C++从C语言继承过来的特性,使用方便同时又可以提供绝佳的性能,因此被广泛使用。但是简便的另一面就是风险,其中最大的两个问题就是退化(array decay)和越界访问(range errors)。本文介绍如何提前使用C++20新特性span解决数组退化和越界访问的问题。首先看使用数组的最常见代码:int data[10];for (size_t i = 0; i < sizeof(data)/sizeof(data[0]); ++i) {data[i] = 0;}数组被定义时,同时转载 2020-12-31 10:15:33 · 414 阅读 · 0 评论 -
可变参数在函数宏中的使用
示例代码#include <stdlib.h>#include <stdio.h>#include <string.h>#define TEST(func, arg...) { \ printf("%s = %d\n", #func, func(arg)); \}int max_double(int a, int b) { return a > b ? a : b;}int max_triple(int a, int b, in原创 2020-11-22 19:50:17 · 102 阅读 · 0 评论 -
__typeof在宏函数中的使用
用于交换2个数字的宏函数代码示例#define SWAP(a, b) { \ __typeof(a) __temp = a; \ a = b; \ b = __temp; \}原创 2020-11-22 19:23:57 · 525 阅读 · 0 评论 -
快速排序优化
快速排序退化为选择排序当数据是逆序的时候,patition后每次都是1与n-1,快速排序的时间复杂度就退化为选择排序,为n2。快速排序的优化可以有效防止快速排序性能退化可以节约栈空间但平均时间复杂度不会降低#include <stdlib.h>#include <stdio.h>#include <time.h>#include <string.h>#define SWAP(a, b) { \ __typeof(a) __te原创 2020-11-22 19:21:45 · 871 阅读 · 0 评论 -
初探快速排序
基本算法流程1. 将最左边的数选择为基数,并分别将最左边和最右边赋值给左右指针(l, r)2. 移动右指针,遇到小于基准值的值,将值放入l的位置,l++3. 移动左指针,遇到大于基准值的值,将值放入r的位置,r–4. 直到左右指针相遇,将基准值放入l的位置代码实现可以作为模板保存,也要注意快排中都不要加等于号,都是 < 或者 >void quick_sort(int *num, int left, int right) { if (left > right)原创 2020-11-22 12:53:02 · 142 阅读 · 0 评论 -
普通人写的二分查找和高手写的二分查找
普通人的二分查找int primary_binary_search(int* nums, int numsSize, int target) { if (numsSize <= 0 || nums == NULL) { return -1; } if (target < nums[0] || target > nums[numsSize - 1]) { return -1; } if (target == nums[原创 2020-11-21 21:12:56 · 81 阅读 · 0 评论 -
关于srand(time(0))
前言计算机没有办法产生真正的随机数的,是用算法模拟,所以只调用rand(),每次出来的东西是一样的。\color{red}只调用rand(),每次出来的东西是一样的。只调用rand(),每次出来的东西是一样的。设置一个种子后,根据种子的不同,就可以产生不同的数了。而怎么保证种子的不同呢?最简单的办法当然是用永远在向前的时间。srand(time(0)) ;//先设置种子rand();//然后产生随机数srand是种下随机种子数,你每回种下的种子不一样,用rand得到的随机数就不一样。为了每回种下一个原创 2020-11-21 17:37:01 · 1099 阅读 · 0 评论 -
简版的printf函数实现
以下代码实现了%d、 %s的打印#include <stdio.h>#include <stdarg.h>#include <inttypes.h>unsigned int rev_num(int n, unsigned int *temp){ unsigned int digit = 0; *temp = 0; do // 使用do-while保证0可以打印出来 { *temp = *temp * 10 +原创 2020-11-19 10:32:02 · 139 阅读 · 0 评论 -
变参函数实现实例
变参函数实现可变参数max_int, 从若干传入的参数中返回最大值。int max_int(int a, …);如何获得a往后的参数列表? va_list 类型的变量如何定位a后面的第一个参数的位置?va_start 函数如何获取下一个可变参数列表中的参数?va_arg函数如何结束整个获取可变参数列表的动作? va_end函数使用实例#include <stdio.h>#include <inttypes.h>#include <stdarg.h>原创 2020-11-18 09:35:37 · 172 阅读 · 0 评论 -
printf、sprintf、fprintf、typeof的一个使用小示例
代码示例#include <iostream>#include "complex.h"//typeof的使用#define swap(a, b) { \ __typeof(a) __temp = a; \ a = b; \ b = __temp; \}int main() { int n; scanf("%d", &n); // 标准输入stdin printf("%d\n", n); // 标准输出stdout原创 2020-11-18 09:04:52 · 242 阅读 · 0 评论 -
写一个程序,读入一行字符(可能包含空格),使用printf计算字符数量。
#include <stdio.h>int main() { char str[100] = {0}; while(scanf("%[^\n]s", str) != EOF) { // %[^\n]s 可以读入除了\n以外的字符 getchar(); // 过滤掉 \n printf(" has %d characters\n", printf("%s", str)); } retu原创 2020-11-17 22:32:51 · 395 阅读 · 1 评论 -
使用printf计算一个正整数n的十进制位数
#include <stdio.h>int main() { int n; scanf("%d", &n); printf(" has %d digits", printf("%d", n)); // 利用printf返回的是字符的个数 return 0;}原创 2020-11-17 22:04:56 · 428 阅读 · 0 评论 -
我的第一个makefile
基本语法目标: 依赖1,依赖2命令示例如下(windows下):# 生成main.exe依赖outputMatrix.o和main.o# 需要执行命令g++ -o main outputMatrix.o main.o# 下同main: outputMatrix.o main.o g++ -o main outputMatrix.o main.omain.o: main.cc outputMatrix.h g++ -c main.ccoutputMatrix.o: outputMat原创 2020-11-13 21:00:45 · 102 阅读 · 0 评论 -
二维数组作为函数入参的三种格式
#include <stdio.h>void output1(int a[3][4]) // 数组名,带上行数、列数,只需要一个参数。 缺点是:数组的行、列都必须是固定大小的。{ printf("Call OutPut1:\n"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { printf("%d ", a[i][j]); }原创 2020-11-13 15:15:40 · 3596 阅读 · 0 评论 -
VSCode debug时像查看数组一样查看指针
int main() { int *c = (int *)malloc(4 * sizeof(int)); c[0] = 5; c[1] = 6; c[2] = 7; c[3] = 8; int d[4] = {1, 2, 3, 4}; return 0;}两种方法:*指针@数字*(int (*)[10])pointervscode c/c++ debug | View Pointer as Array #4...原创 2020-11-07 17:42:43 · 4259 阅读 · 1 评论 -
初探Vector
C++ vector是什么?应该如何理解转载地址:http://hi.baidu.com/phpok/item/b2df4db0ab6925f262388eab最近有几个好友问到我C++中的vector到底怎么理解它,很多人没有接触过它。一时间都被搞的晕头转向。其实vector很好理解,它就是可以动态创建对象元素个数的数组。如果你不知道什么是数组那就别浪费时间看下去。因为在转载 2013-07-27 14:37:16 · 694 阅读 · 0 评论 -
c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论转载地址:百度文库 http://wenku.baidu.com/view/d74c5e1fff00bed5b9f31d99.html//由于数组的元素个数默认情况下是不作为实参内容传入调用函数的,本程序用来讨论有此带来的//相关问题,以及解决问题方法,即给调用函数传递数组的元素个数的几种有效方法并实现它转载 2013-07-27 14:54:00 · 969 阅读 · 0 评论 -
从一道题谈C++中构造函数调用构造函数
转载:http://www.cnblogs.com/chio/archive/2007/10/20/931043.html题目如下:问下列代码的打印结果为0吗?#include stdlib.h>#include iostream>using namespace std;struct CLS{ int m_i; CLS( int i转载 2013-09-21 21:07:15 · 663 阅读 · 0 评论 -
VS2010+OpenCV2.4.4 配置最简版
本文的方法适用于直接使用opencv提供的编译好的文件,不包括自编译的过程,关于自编译和直接使用编译好的文件的区别,可参见http://blog.csdn.net/poinsettia/article/details/17005435方法如下:1.下载OpenCV-2.4.4.exe2.运行OpenCV-2.4.4.exe(自解压文件),的到目录如下所示,其中build文件夹最为重要。原创 2013-11-28 16:39:18 · 930 阅读 · 0 评论 -
Cmake入门第一课
一起学习CMake – 01 2011-01-07 14:38:17| 分类: CMake | 标签:cmake |字号 订阅 转载地址:http://blog.163.com/jacky_ling0/blog/static/1373925712011072375418/本节介绍CMake里最常用的三个命令,分别是cm转载 2013-11-28 11:23:40 · 705 阅读 · 0 评论 -
opencv 2.4.4完整库文件
opencv 2.4.4完整库文件release版本opencv_core244.libopencv_highgui244.libopencv_video244.libopencv_photo244.libopencv_calib3d244.libopencv_contrib244.libopencv_features2d244.libopencv_flann2原创 2013-11-28 13:49:23 · 2608 阅读 · 0 评论 -
为什么要使用cmake+VS重新编译的opencv库?
为什么要使用cmake+VS重新编译的opencv库?使用opencv需要编译源码,得到库文件。可以用cmake构建项目后编译,也可以直接用官方提供的编译好的版本。官方提供的编译库一般只是标准版本,可能与某些库并不兼容,比如官方提供的编译好的版本与opengl就不兼容,这时就只能自己构建项目后编译。在用cmake生成工程文件的时候,设置当中有WITH_OPENGL,WITH_QT等选项原创 2013-11-28 14:07:40 · 3352 阅读 · 0 评论 -
关于VS2010 的command arguments
很多程序需要手动输入command arguments,方法:properties》configuration properties》Debugging》command arguments。各个参数用空格隔开,如果参数本身就含有空格,用“”号将参数包括起来即可。比如目录D:\Program_Work\Learning OpenCv\commonly used images\Fruits.jpg原创 2013-11-28 17:03:01 · 2906 阅读 · 0 评论 -
学习openCV中tutorial_code的资料
中文教程:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html 非常好!图像平滑处理的一篇本科毕业论文:http://www.doc88.com/p-865119340581.html我的学习方法是跑openCV包中的tutoria_code中的代码,看上面的中文教程,感觉效果不错。既能原创 2013-11-29 18:36:59 · 1339 阅读 · 0 评论 -
Kinect for Windows SDK开发学习相关资源
转载地址:http://www.cnblogs.com/yangecnu/p/3150744.html Kinect for Windows SDK(K4W)将Kinect的体感操作带到了平常的应用学习中,提供了一种不同于传统的鼠标,键盘及触摸的无接触的交互方式,在某种程度上实现了自然交互界面的理想,即通过手势,语音即可向应用程序发出指令。目前K4W SDK已经更新到了1.7版本,新的Xbox转载 2013-12-09 11:36:20 · 1046 阅读 · 0 评论 -
VS环境中,cmake出来的ALL_BUILD项目和 ZERO_CHECK项目的作用
转载地址:http://blog.csdn.net/jtop0/article/details/6167432CMake是 跨平台软件开发和维护过程的 工程构建工具。“在每个系统构建你的工程,而无须关心创建可执行文件和动态库的具体方法”。 CMake 相对于其他类似工具(shell脚本、Makefiles、Jam文件、基于复杂的脚本的工程像Autoconf和Automak转载 2013-12-05 11:41:54 · 12036 阅读 · 0 评论 -
debugging information cannot be found or does not match.binary was not built
转载地址:http://blog.csdn.net/xexiyong/article/details/8614876debugging information cannot be found or does not match.binary was not builtError Msg:Debugging information for "YourProject.exe" cann转载 2014-01-22 17:01:15 · 1449 阅读 · 0 评论