
C/C++相关
宁静致远_淡泊明志
这个作者很懒,什么都没留下…
展开
-
实现NCThread功能
功能描述:定义一个类,继承NCThread 类,调用start函数就可以启动一个线程,线程调用子类的run函数步骤:定义父类NCThread,定义一个静态函数,函数参数为void*,这里会传该类的指针进来 父类NCThread中定义run函数,注意为virtual,这样才可以调到子类的run函数 父类NCThread定义start函数,启动一个线程,线程函数为该类中的静态函数,参数为this指针 定义子类MyThread,重写父类的run函数#include <iostream>原创 2020-05-23 11:48:39 · 519 阅读 · 0 评论 -
C++好用的static_assert
程序:#include <iostream>#include <cassert>#include <cstring>using namespace std;//使用模板实现一个位比较的函数template<typename T, typename U>int bitCopy(T& t, U& u) { stat...转载 2020-03-27 18:45:09 · 686 阅读 · 0 评论 -
对‘std::__throw_out_of_range_fmt(car const*, ...)@GLIBCXX_3.4.20’未定义的引用
cmake编译报错:libgflags.so:对‘std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20’未定义的引用先将g++版本修改,然后在CMakeLists.txt添加编译选项set(CMAKE_CXX_COMPILER g++)...原创 2019-12-28 17:37:20 · 6066 阅读 · 1 评论 -
ubuntu14.04 gedit配置
ubuntu14.04系统下,快捷键编译gedit生成的c++和c和java文件设置gedit的配置 tool->tool manager#!/bin/sh fullname=$GEDIT_CURRENT_DOCUMENT_NAME name=`echo $fullname | cut -d. -f1` suffix=`echo $fullname | cut -转载 2017-11-28 17:27:32 · 1249 阅读 · 0 评论 -
GNU makefile文件
背景:做项目时候用的是android框见下的makefile文件,当时想在ubuntu下自己的cpp文件使用make好用吗?结果一查,发现GNU自带makefile,语法和android有些差异,估计是android封装了,下面是使用GNU makefile例子,感觉和shell好像.多路经多文件的没有试,在提供的链接中有相应的案例.例子1#linux makefileCC原创 2017-11-28 17:23:52 · 473 阅读 · 0 评论 -
网络编程 UDP 聊天功能
UDP(User Datagram Protocol),用户数据包协议。在选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的原创 2015-07-30 09:18:15 · 509 阅读 · 0 评论 -
网络编程 TCP
参考孙鑫视频...1、服务器端程序#include #include int main(){ //加载套接字库,1.1版本 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequeste原创 2015-07-27 16:38:46 · 522 阅读 · 0 评论 -
C++中需要注意的一些概念(primer)
1、当const变量时常量表达式初始化时,可以保证所有的变量都有相同的值。但是在实践中,大部分的编译器在编译时都会用相应的常量表达式来替换对这些const变量的使用。所以,在实践中不会有任何存储空间用于存储常量表达式初始化的const变量。2、字符串字面值和标准库string类型不是同一种类型,这一点很容易引起混乱。3、vector必须是已经存在的元素才能用小便操作符进行索引。通过下标操作原创 2015-02-05 14:28:06 · 525 阅读 · 0 评论 -
C++中的一些概念的区分
1、内联函数和宏定义区别(a)内联函数和普通函数相比可以加快程序的运行速度,因为不需要中断调用,在编译的时候内联函数可以直接被嵌入到目标代码中。而宏只是一个简单的替换。inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说inline增加控件消耗换来的是效率的提高,这方面和宏是一样的,但是 inline在和宏相比没有付出任何额外代价的情原创 2015-01-03 16:22:10 · 641 阅读 · 1 评论 -
google test 轻松编写C++单元测试
简介: googletest 与 googlemock 是 Google 公司于 2008 年发布的两套用于单元测试的应用框架,本文将向读者介绍如何应用这两套应用框架轻松编写 C++ 单元测试代码。以下讨论基于 gtest-1.2.1 及 gmock-1.0.0 。单元测试概述测试并不只是测试工程师的责任,对于开发工程师,为了保证发布给测试环节的代码具有足够好的转载 2016-05-12 11:09:38 · 7392 阅读 · 2 评论 -
ubuntu系统 网络socket通信和本地sock通信(抽象命名方式和普通命名方式)
编译环境:ubuntu14.04 本地socket通信client程序:#include #include #include #include #include #include /*程序里包含服务端和客户端两个程序,它们之间使用 AF_UNIX 实现本机数据流通信。使用 AF_UNIX 域实际上是使用本地 socket 文件来通信。*/转载 2017-11-24 17:02:04 · 759 阅读 · 0 评论 -
linux poll操作read write操作使用
/*poll 阻塞的使用:poll就是对描述符进行监听,和select类似,但是poll没有最大描述符的限制,并且poll的描述符使用之后不会被清空,而select每次使用之后都要重新设置.不过他俩作用是一样的,进行阻塞操作.通过调用poll之后,内核可以告诉我们是否可以读写操作.pollfd结构体定义如下:struct pollfd {原创 2017-12-28 11:51:52 · 3092 阅读 · 0 评论 -
调用pthread_cancel阻塞问题解决方法.
两个例子:阻塞例子: #include #include #include #include void *thread_fun(void *arg) { int i=1; printf("thread start \n"); while(1)转载 2018-02-04 17:55:44 · 1486 阅读 · 0 评论 -
静态函数之多线程
静态成员变量可以再非静态成员函数中使用,Bjarne Stroustrup为什么再创建C++的时候要创建一种静态成员函数呢?C++产生年份:1982年,美国AT&T公司贝尔实验室的Bjarne Stroustrup博士在c语言的基础上引入并扩充了面向对象的概念,发明了—种新的程序语言。为了表达该语言与c语言的渊源关系,它被命名为C++。而Bjarne Stroustrup(本贾尼·...原创 2018-03-09 17:24:36 · 2284 阅读 · 0 评论 -
C++ boost库 遍历读取文件夹文件
#include <boost/filesystem/operations.hpp>#include <boost/filesystem/path.hpp>#include <boost/filesystem.hpp>namespace fs = boost::filesystem;//定义函数recursion,递归遍历全部文件夹void rec...原创 2018-08-18 17:54:55 · 3974 阅读 · 0 评论 -
OpenCV 4.0.0编译并通过inter引擎优化流程
opencv4.0.0发布,并且可以通过OpenVINO进行intel引擎优化,提高处理速度所用到的库有:1:opencv 4.0.02:Opencv_contrib3:ippicv_2019_lnx_intel64_general_20180723.tgz4:l_openvino_toolkit_fpga_p_2018.4.420_online 我上传了我这次用的:ht...原创 2018-12-21 11:24:01 · 1924 阅读 · 1 评论 -
C++ 使用folly的异步回调功能时出现的错误处理
错误1:/tmp/ccEeAok8.o: In function `main':follypromise.cpp:(.text+0x1c6): undefined reference to `folly::Future<folly::Unit>::~Future()'follypromise.cpp:(.text+0x245): undefined reference to `...转载 2019-05-10 10:16:03 · 1613 阅读 · 0 评论 -
设计模式之单例模式
//单例模式:保证一个类仅有一个实例,并提供一个访问它的全部变量,//主要解决:一个全局使用的类,频繁的创建和销毁,可以控制实例数目,节省系统资源,构造函数一定为私有的。//实现方式: //懒汉模式:第一次用到类的实例的时候才会去实例化 //饿汉模式:在单例类定义的时候去实例化 //各自的使用场景:在访问量比较大,或者可能访问的线程比较多的时候,采用饿汉模式,可以实现更好的性能,以...原创 2019-09-01 17:52:11 · 177 阅读 · 0 评论 -
C++中函数返回值的问题与产生随机数
刚刚测试了一个程序,感觉很怪异,和我之前理解的不一样!程序:int& ABC() { int n = 5; return n; }int _tmain(int argc, _TCHAR* argv[]){ int n = ABC(); cout << n << endl;}假如是上面的程序,那么n的输出就是5,这里没有什么问题,因为在赋值的时候会进行复制操作。原创 2015-04-28 16:03:58 · 1473 阅读 · 0 评论 -
Visual Studio 2010中的C++程序调用matlab程序代码 混合编程
本文目的:用matlab语言编写的程序函数可以通过参数接口在C++程序中调用,通过使用matlab生成dll形式,用C/C++程序调用!!!环境配置:1、环境及其所用工具:Window 7系统 matlab2012b VS20102、这里注意下安装顺序,在安装matlab之前,一定要有VS软件在操作系统中 .否则在生成dll过程中,会找不到VS情况存在。下面用matlab 2原创 2015-12-22 15:35:17 · 8487 阅读 · 0 评论 -
C语言实现一个去除字符串中的首尾空格,字母中间有多个空格的去除多余的,剩余一个空格
// meituanmoni.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ //char *sourceString = " liu shuan peng "; char *s原创 2015-09-08 08:56:21 · 5786 阅读 · 0 评论 -
VS2008下Debug和Release的区别
区别1:请看下面一段程序:void test();int _tmain(int argc, _TCHAR* argv[]){test();return 0;}void test(){double dTest;if (dTest){cout}else{cout}}如果该程序在debug下运行,编译是不会出错,运行时会出现如下错误,说dTest没有被初始化,原创 2014-05-13 15:33:46 · 1375 阅读 · 0 评论 -
vs2008中的TSTCON32.exe问题
原文地址:vs2008中的TSTCON32.exe问题作者:宁静致远lsp网上找了几十篇文章没有找到解决方案,最后综合了两篇的内容,终于解决了。步骤如下:1、将D:Program FilesMicrosoft Visual Studio9.0Samples2052AllVCLanguageSamplesC++MFColeTstCon下的TstCon.vcproj剪切出去先,之后在将D:Pro转载 2014-05-13 15:33:03 · 1281 阅读 · 0 评论 -
编译链接原理 C++
编译时,产生目标问题.obj文件,将源代码翻译成机器语言。在此过程中,各个编译单元式没有沟通的,他们是在链接阶段进行沟通。在编译阶段如果一个文件中用到了另一个文件的变量,由于在编译阶段这两个文件时没有沟通的,所以会出现找不到的问题。这个问题通过未解决符号表、导出符号表、地址的重定向表 这三个表之间的协调可以解决。三个表的定义:未解决符号表:在本编译单元中使用,没有在本编译单原创 2014-05-13 15:33:27 · 566 阅读 · 0 评论 -
C/C++基本知识(二)
接上:原创 2014-11-25 09:02:53 · 772 阅读 · 0 评论 -
C/C++基本知识(三)
1、 CList是MFC双向链表类,微软在开发MFC链表类的同时,C++也在开发C++类库。最后C++97版本和VC6.0都是同时推出。std::list也是双向链表类;std::list是C++类库,在任何操作系统的C++编译器(标准的)都可用,而CList只能在微软操作系统下使用(但是在面试题中常见,适用于教学)。2、std与STL区别:a)STL:标准模板库 b)s原创 2014-11-25 16:48:57 · 834 阅读 · 0 评论 -
OpenCvSharp+VS2012+Windows 64bit 安装配置
1.下载OpenCv2.3.1安装superpack需要run as administor设置Environment variables中的System variablesPath=.....\opencv\build\x86\vc10\bin\user variablesPath=.....\opencv\build\x86\vc10\bin\ (转载 2014-11-29 10:54:18 · 3063 阅读 · 0 评论 -
动态链接库理解(二)
1、在(一)我们提到C++编译器在导出函数的时候,会对函数做名字改编,这样的话,我们用C++编写的dll,拿给C语言,或C#语言的客户端程序调用就会出问题。因为名字发生了改变,会找不到。所以我们希望在输出函数名的时候,名字最好不要发生改变。但是怎么办呢?(1)只需要将(一)中的Dll1.h中的#define DLL1_API _declspec(dllimport)变为#def原创 2015-01-25 21:25:46 · 657 阅读 · 0 评论 -
C/C++基本知识(一)
最近看了一些关于C/C++数据结构的视频,看到视频中有一些需要注意的问题,记录下来,一共参考原创 2014-11-22 21:14:30 · 788 阅读 · 0 评论 -
动态链接库理解(一)
对于其他的程序要想访问一个dll中的函数的话,这些函数必须是已经被导出的函数;那么我们怎么查看一个dll中有哪些函数是被导出的呢?我们用Visual Studio中的一个工具查看,具体步骤是:1、进入dos2、今天dll所在的路径3、使用dumpbin命令(如果在dos下找不到dumpbin,我们可以进入Visual的安装路径下,bin文件夹中有一个dumpbin.exe文件,在b原创 2015-01-25 20:26:44 · 725 阅读 · 0 评论 -
C++ primer中的一些概念和编程时应注意的问题
1、选择容器的一些法则:(a)如果程序要求随机访问元素,则应使用vector或deque容器。(b)如果程序必须在容器的中间位置插入或删除元素,则应采取list容器(c)如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用deque容器(d)如果只需要在读取输入时在容器的中间位置插入元素,然后需要随机访问元素,则可考虑在输入时将元素读入到一个list容器,原创 2015-03-08 14:45:14 · 532 阅读 · 0 评论 -
多核 多线程 进程的概念
今天吃饭的时候,聊起了一个困扰我很久的问题。查了些资料加上自己的一些理解,如果不对,请指正:我们在买电脑的时候经常遇到一些概念,我这电脑是多核多线程的,什么双核的,什么四核、八核的,这种运动速度电脑快!那么这样的电脑为什么运行速度快?当然,运行速度快有很多原因,比如主频、缓存什么的。这里我们只说,为什么多核会导致运行速度快?至于多线程为什么会导致运行速度快,有一篇里面我介绍了。从内核的原创 2015-05-09 20:13:07 · 3626 阅读 · 0 评论 -
Boost 1.46.1编译成VS2008版本
今天Boost.org上下载了Boost的最新版本1.46.1,然后编译成VS2008的可用版本,总耗时大概20分钟左右。步骤如下:1. 至Boost.org上下载Window下的Boost最新版 http://sourceforge.net/projects/boost/files/boost/1.46.1/ PS: 我下载的后缀为.7z的压缩版本。2. 解压至本地硬盘,我解压在转载 2015-05-04 14:06:38 · 869 阅读 · 0 评论 -
C++的main函数参数
程序:文件名为:main函数参数#include "stdafx.h"#include using namespace std;int main(int argc, char* argv[]){ cout << "可执行文件为:" << /*(char*)*/argv[0] << endl; //cout << (char*)argv[0][0] << endl; cou原创 2015-05-15 20:07:36 · 668 阅读 · 0 评论 -
C/C++ 指针做参数 堆内存分配
1、指针参数分配堆内存问题void GetMemory(char *p,int num){ p = new char[num];}int _tmain(int argc, _TCHAR* argv[]){ char *str = NULL; GetMemory(str,100); strcpy(str,"hello");}注意:像以上程序的分配方法是有问题的,程序原创 2015-08-25 21:27:49 · 1464 阅读 · 0 评论 -
C#调用C++生成的dll,参数有结构体数组
废话少说,只上程序。C++生成dll程序:/*实现功能:将一个图片中,所在行的像素值,按照一定的间隔(列数),将对应点的像素值提取出来。*/#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/core/core.hpp"#include #原创 2014-12-15 20:10:38 · 3753 阅读 · 0 评论 -
在C#中使用C++的DLL,并且在DLL中包含有opencv的代码,通过“障眼法”操作
最近,老师在做项目,要我实现上述标题需求。第一步:原创 2014-07-23 19:48:10 · 11104 阅读 · 7 评论 -
C#调用matlab写的动态链接库(dll)
最近老师在做项目,有一个需求,就是他现在用matla原创 2014-09-16 12:50:28 · 8245 阅读 · 0 评论 -
C++中的一些问题
1、error C2143: 语法错误 : 缺少“;”(在“类型”的前面)这个错误如果是定义变量的话,要将变量定义在函数的开始处才行。2、LINK : fatal error LNK1000: Internal error duringIncrBuildImage项目--》属性--》连接器--》常规--》启动增量链接器--》改为否;3、主函数的参数问题argc表示参数的个数,argv表原创 2014-05-13 15:33:01 · 474 阅读 · 0 评论