c/c++
文章平均质量分 92
iot-genius
If I Rest, I Rust!!
展开
-
Linux采集Fanuc机床数据测试
依赖库文件目录:FOCAS2\Linuxso文件:libfwlib32.so.1.0.5头文件:fwlib32.h操作步骤拷贝库文件"libfwlib32.so.1.0.5" 到应用目录(可以直接复制到系统库目录更方便 “/usr/local/lib/” f)运行如下3个命令:sudo ldconfigsudo ln –s /usr/local/lib/libfwlib32...原创 2020-03-28 20:16:56 · 4160 阅读 · 11 评论 -
C++Primer再读读书笔记:第三章
一、标准库string类型 1、string对象的定义和初始化 2、从标准输入读取string,string类型的输入操作符:读取并忽略开头所有的空白字符读取字符直至在此遇到空白字符,读取终止 3、读入未知数目的string对象string word;while(cin >> word) cout 4、用getl原创 2013-01-12 13:25:37 · 1349 阅读 · 0 评论 -
C++Primer再读读书笔记:第五章
一、算术操作符 一元操作符优先级别最高,其次是乘、除操作,接着是二元的加、减法操作。当操作符的优先级一样时,一般是从左到右依次与操作数结合。如果两个操作数为正,除数(/)和求模(%)操作的结果也是正数(或零),如果两个操作数都是负数,除法操作的结果为正数(或零),求模操作的结果则为负数(或零)。如果只有一个操作数为负数,这两种操作的结果(求模结果)取决于机器,除法操原创 2013-01-24 07:53:03 · 2122 阅读 · 8 评论 -
C++Primer再读读书笔记:第一、二章
过去也看过一遍,不过当时没怎么详细理解,在此阅读一遍查漏补缺,将基础的回味一下。记录下点滴。 1、变量初始化: 定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。变量的初始化如下: int val1 = 0; //初始化 int val2;原创 2013-01-09 08:02:15 · 1680 阅读 · 2 评论 -
Effective C++:条款9: 避免隐藏标准形式的new
因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部和全局声明的两个相同名字的函数f来说,类的成员函数会隐藏掉全局函数:void f(); // 全局函数class x {public: void f(); // 成员函数};x x;f();原创 2012-12-21 17:19:37 · 1434 阅读 · 0 评论 -
C++引用与指针的区别
这几天看重温了下《高质量C/C++编程指南》和 《More Effective C++》对于里面的引用和指针觉得写得很精辟,同时在网上也找了些别人写的总结,引用过来大家分享下。 虽然使用引用和指针都可以间接访问另一个值,但他们之间有两个重要区别:引用总是指向某个对象,定义引用没有初始化是错误的。赋值行为的差异,给引用赋值修改的是该引用所关联的对象的值,而并不是使引用与另一个对原创 2013-01-04 15:22:14 · 6859 阅读 · 6 评论 -
C/C++ main用法总结
今天看到一篇很好的文章,详细的讲解了C、C++中的main函数,以及returne的用法。转载过来大家一起分享下。转自:http://www.cnblogs.com/ct6816678/archive/2012/10/26/2741824.htmlreturn是C++预定义的语句,当return语句提供了一个值时,这个值就成为函数的返回值. 很多人甚至市面上的一些书籍,都使原创 2012-12-17 19:53:20 · 3621 阅读 · 2 评论 -
extern "C" 介绍(转)
本文转自:http://www.cnblogs.com/ppazhang/archive/2012/11/27/2790920.html时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是c原创 2012-12-13 20:34:01 · 1759 阅读 · 1 评论 -
再谈C语言可变参数
在我的上一篇博文(C语言可变参数函数探秘)中介绍了C语言可变参数的原理和一个简单的示例,不过现在发现那个示例不太好,今天发现一个比较好一点的示例分享下。#include /* minprintf: minimal printf with variable argument list */ void minprintf(char *fmt, ...) { v原创 2012-12-12 20:23:40 · 2192 阅读 · 0 评论 -
Directshow 学习导引(转)
转自:http://blog.csdn.net/liujb861213/article/details/7955865 目前正想学习DirectShowdxsdk_sum2004下载地址vs 2005 directshow 编译及配置(附图)http://tmhare.mvps.org/downloads.htm 一些directshow源码和工具htt原创 2012-12-23 14:08:45 · 1525 阅读 · 0 评论 -
C语言可变参数函数探秘
一直以来习惯了使用printf函数,但是对于可变参数没有深入研究过,觉得可变参数是一个神奇的技术。想研究研究看可变参数的使用和原理。目前C提供的可变参数的申明为void function(const char *format, ...);这样就可以在function中使用可变参数C提供了几个宏用于使用可变参数va_listva_startva_argva_endC函数要在程序中用原创 2012-11-22 21:37:56 · 2310 阅读 · 2 评论 -
如何学好C++语言(转)
昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。我原创 2012-12-09 20:00:07 · 1158 阅读 · 0 评论 -
如何学好C语言(转)
有人在酷壳的留言版上询问下面的问题keep_walker :今天晚上我看到这篇文章。http://programmers.stackexchange.com/questions/62502/small-c-projects我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢!我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程原创 2012-12-09 20:00:55 · 1199 阅读 · 0 评论 -
C++中的位拷贝与值拷贝浅谈
位拷贝拷贝的是地址(也叫浅拷贝),而值拷贝则拷贝的是内容(深拷贝)。深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。 位拷贝,及"bitwise assignment"是指将一个对象的内存映像按位原封不动的复制给另一个对象,所谓值拷贝就是指,将原对象的值复制一份给新对象。 在用原创 2013-01-04 13:35:49 · 13926 阅读 · 29 评论 -
C++Primer再读读书笔记:第四章
一、数组 数组是有类型名、标识符和维数组成的复合数据类型,类型名规定了存放在数组中的元素类型,维数则指定数组中包含的元素个数。 1、数组的长度是固定的,与vector类型不同,数组不提供push_back或者其他的操作在数组中添加新元素。如果必须添加新元素,程序员必须自己管理内存,重新分配一个新的内存空间更大的数组,复制所有元素到新的数组。原创 2013-01-19 09:21:26 · 1693 阅读 · 0 评论 -
进程动态拦截注入API HOOK
进程动态拦截注入Windows API原创 2019-05-26 04:24:13 · 1260 阅读 · 0 评论 -
一起学习Boost标准库--Boost.texical_cast&format库
今天接续介绍有关字符串表示相关的两个boost库:lexical_cast 将数值转换成字符串format 字符串输出格式化首先,介绍下lexical_cast ,闻其名,知其意。类似C中的atoi 函数,可以进行字符串与整数/浮点数之间的字面转换Boost::lexical_cast库前期准备lexical_cast库位于boost命名空间下,使用需...原创 2018-05-13 21:56:41 · 826 阅读 · 0 评论 -
一步一步实现HTTP服务器-开篇
缘起翻开清单,一条条计划一直列在那里,一天又一天,不知道什么时候写下了它,也知不道什么时候完成它,它一直在那静静的等待着。静下心来,反思自己,才发现自己是多么的无知,多么的没有毅力。设定了无数目标,指定了无数计划,但是到头来呢?都是在无尽的叹息中,放弃了定下的目标。坚持 只是每天不断在内心回响的口号,想起了,就猛地觉醒,要进步、要努力、要坚持、要有目标。但是每每都是拿出计划本亦或是打开清单...原创 2018-05-18 08:54:43 · 630 阅读 · 1 评论 -
关于typedef的用法总结
在C还是C++代码中,typedef都使用的很多,在C代码中尤其是多。typedef与#define有些相似,其实是不同的,特别是在一些复杂的用法上,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,加上自己的一个分析。原创 2012-12-12 08:24:04 · 152189 阅读 · 79 评论 -
调试版本和发行版本
Microsoft将应用程序的调试版本定义与符号调试信息,或与调试库一起建立的程序的一个版本。一个库的版本包括诊断帮助。并执行各种集成检查,以帮助调试一个程序。Microsoft将发行版本定义为程序的一个编译版本,其中不包括在调试模式中建立编译时所包含的调试和诊断特性。例如发行版本不包括ASSERT宏所包含的源代码。1.缺省的调试版本建立与发行版本建立设置 缺省调试原创 2013-05-13 21:13:05 · 2749 阅读 · 0 评论 -
C++实现一个二维数组类
#ifndef __H_MATRIX_H__#define __H_MATRIX_H__#include using namespace std;templateclass matrix{ public: matrix(int rows, int cols):array(rows) { for (int i=0; i<rows; i++) array[i].原创 2013-05-25 14:05:02 · 5117 阅读 · 0 评论 -
Microsoft Visual Studio C++ 编译器选项设置
1、vc ->Project->Setting->C/C++ 的优化选项依赖与Category下拉框:General 提供了最有效的选择一个一般优化目标的方法,但不允许精细地控制单个优化技术 在优化选项下有5种选择:Default、Disable(Debug)、Maximize Speed、Minimize Size和Customize。原创 2013-05-06 20:16:58 · 16867 阅读 · 2 评论 -
VC运行时库
编译程序是遇到几个错误,发现是运行时库设置的问题,网上找资料发现这写得不错收藏一个。 原文:http://dearymz.blog.163.com/blog/static/205657420096675044722/ VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多原创 2013-05-02 18:49:17 · 2201 阅读 · 0 评论 -
i++ and ++i的误解
不知在那本书上看到 ++i比i++要快(i++需要一个临时变量存储i的值后再++),就记住这个一直没测试,所以在写代码的时候 一直就使用++i觉得它快。今天测试了下发现并不是这么回事,一直被误解。所以写了简单的demo测试了下:int main(){ int a,c; a = 0; a++; ++a; c =a++; c = ++a; c = a+1;原创 2013-05-02 22:36:44 · 2463 阅读 · 1 评论 -
vs2010 快捷键大全
VS2010版快捷键Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口 SHIFT + F4显示项目原创 2013-04-20 18:39:08 · 1473 阅读 · 0 评论 -
#pragma 预处理指令详解[转载]
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用原创 2013-02-24 08:53:03 · 1566 阅读 · 0 评论 -
c++继承中的内存布局(转)
今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ O原创 2012-12-09 20:05:12 · 5674 阅读 · 0 评论 -
Win7、VS2010、OpenCV2.3.1 出现:“无法启动此程序,因为计算机中丢失tbb_debug.dll.尝试重新安装该(转)
问题描述:Win7、VS2010、OpenCV2.3.1 出现:“无法启动此程序,因为计算机中丢失tbb_debug.dll.尝试重新安装该程序以解决问题”。解决方法: (详见OpenCV中文网站论坛http://www.opencv.org.cn/forum/viewtopic.php?p=52223)论坛中提到的方法:方法一:下载tbb3.0,解压后,在其..\bin\原创 2012-12-06 11:31:00 · 6979 阅读 · 2 评论 -
2013亚马逊面试题--虚继承的内存模型分析
前两天逛论坛的时候,看到一个有关虚继承中类的大小(亚马逊二面的面试题)帖子,看了下还真不会,觉得慢慢研究下。大概搞明白为什么了,将自己的一点结果跟大家分享下吧,欢迎拍板。(我的上一篇博客也虚继承有相关解释)这里就先从以下几个点进行说明吧: 虚继承和虚基类vs2010下的cl命令内存模型 虚继承和虚基类 虚继承:在继承定义中包含了virtual关键字的继承原创 2012-10-16 16:21:21 · 8632 阅读 · 4 评论 -
MinGW在Win7下的按装、设置和使用
1、引言 MinGW is the abbreviation of “Minimalist GCC Windows”. 简单地说, MinGW就是windows下的GCC [2]. 在windows下按装了MinGW, 就按装了C/C++, Fortran, 等语言编译器套间. MinGW是完全免费的.有了MinGW就不需要VC, Virtual Fortran等商业编译器了.原创 2012-10-20 13:34:31 · 15176 阅读 · 2 评论 -
VC++对象布局的奥秘:虚函数、多继承、虚拟继承
即派生类继承多次基类,但在派生类中只存在一份基类的拷贝。编译器实现虚拟继承的方式并不相同,下面我结合VS2010来探讨C++虚拟继承 .VC10的隐含编译项/d1reportSingleClassLayout和/d1reportAllClassLayout 。看个复杂的例子吧(如下),现在假设我们想知道Derived类的对象布局,怎么办? 在Project Properties->C++->C原创 2012-10-15 21:53:46 · 4433 阅读 · 1 评论 -
C++编程中的细节--内容覆盖
一个简单的示例来讲解下这个问题。class Concrete{public:private: int val; char c1; char c2; char c3;};class Concrete1{ public: int val; char bit1;};class Concrete2 :public Concrete1{ public: char b原创 2012-10-15 10:28:13 · 2015 阅读 · 4 评论 -
c++异常机制(转)
知识点: c++异常机制(觉得本文很好,转载过来大家分享下)一、 概述 C++自身有着非常强的纠错能力,发展到如今,已经建立了比较完善的异常处理机制。C++的异常情况无非两种,一种是语法错误,即程序中出现了错误的语句,函数,结构和类,致使编译程序无法进行。另一种是运行时发生的错误,一般与算法有关。 关于语法错误,不必多说,写代码时心细一点就可以解决。C++编译器的报错机转载 2012-09-22 20:55:17 · 974 阅读 · 0 评论 -
c++异常处理
学习程序的好方法是阅读代码和改进代码。下面的程例来自《An Overview of the C++ Programming Language》(5.1 异常和错误处理)程序用途:使用C++的异常机制,报告stack的上溢或者下溢。(我适当的把代码补全。)version 1 演示了基本的异常用法。从try里抛出一个异常(实例或对象),由catch里的类接受。 1 versio原创 2012-09-22 20:34:57 · 974 阅读 · 0 评论 -
c++的四种类型转换
一直对这四种转换类型都没好好的研究过,用得最多的还是C的强制转换(TYPE)m_obj;C++有四种类型转换:1.static_cast用法:static_cast ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。 ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上原创 2012-09-18 20:26:25 · 778 阅读 · 0 评论 -
何时使用虚函数?
class Base { public: Base(); ~Base(); … }; class Derived : public Base { … }; Base *p = new Derived; delete p;这个例子中,基类指针p指向派生类对象,那么经由基类指针来释放该派生类对象,会导致资源泄漏。因为基类的析构函数不是虚原创 2012-09-19 15:42:30 · 1081 阅读 · 0 评论 -
C/C++下使用SQLite轻量级数据库
最近公司研发组研发一个产品使用了这个轻量级的数据库,感觉的特别有趣,就初步看看。一、SQLiteSQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合原创 2012-09-13 14:12:08 · 2625 阅读 · 2 评论 -
批量注册两个或多个DLL / OCX 的BAT批处理
regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是:regsvr32 [/u] [/s] [/n] [/i[:cmdline]] DLL文件名命令可以在“开始→运行”的文本框中,也可以事先在bat批处理文档中编写好命令。未带任何参数是注册DLL文件功能,其它参数对应功能如下: /u:反注册DLL文件; /s:安静模式(原创 2012-09-11 16:55:05 · 10916 阅读 · 1 评论 -
const的用法详解
一、面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的,就const直接可以取代c中的#define,以下几点很重要,学不好后果也也很严重1. 限定符声明变量只能被读const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化const int i=5; //合法原创 2012-09-26 21:15:59 · 1684 阅读 · 0 评论 -
ANSI Unicod UTF-8 编码 及其C++读取三种类型文档实现
一、ANSI编码 ANSI码(American National Standards Institute),中文:美国国家标准学会的标准码。为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。 对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表原创 2012-09-10 13:52:14 · 3386 阅读 · 2 评论