C++
lien0906
这个作者很懒,什么都没留下…
展开
-
编译vs2008的程序总是跳过,显示“未能完成操作 未指定的错误”的解决办法 .
今天想参考一下vs2008的示例程序,就是在这里“E:/Program Files/vs2008/Samples/2052/AllVCLanguageSamples/C++/MFC”的程序。 但编译时总是跳过,还不能调试,网上有人说要改平台为win32,但要配置属性或清理项目时却显示“未能完成操作 未指定的错误”。 到网上找了一圈,发现没一个解决办法适合我的(当转载 2017-07-28 17:03:10 · 11335 阅读 · 9 评论 -
类的成员函数共享成员函数体
一个类所有的对象调用的成员函数都是同一代码段,这话怎解?是说所有对象的成员函数都是共享一块内存的?举报|2013-12-11 16:10yy_ever_ly | 分类:其他编程语言 | 浏览69次分享到:2013-12-11 17:00天天爱答题,20元话费等你拿~提问者采纳类的内存有一个叫代码区用原创 2014-12-11 09:34:04 · 866 阅读 · 0 评论 -
CString和其他类型转化
《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”\0“的字符串数组 2,c_str(),返回有”\0“的字符串数组 3,copy() .................................................................int 转 CString:CString.原创 2014-12-12 10:15:05 · 619 阅读 · 0 评论 -
C++读写.mat文件
最近在编写C++程序的过程中,需要使用matlab生成的.mat文件,于是查找了基本使用方法。我的计算机环境是win7 64位系统,VS2010,matlab R2010b。一、工程配置:1.C/C++->常规->附加包含目录 添加:MATLAB\R2010b\extern\includeMATLAB\R2010b\extern\include\win642.链接器转载 2015-01-20 18:55:25 · 2400 阅读 · 1 评论 -
C和C++中main函数的参数及其返回值详细解析
main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出返回值的作用 main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出;返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。下面我们在winxp环境下做一个小实验。首先编译下面的程序:int ma原创 2014-12-16 11:07:12 · 5176 阅读 · 0 评论 -
多线程读取同一个内存数据会出错吗
多线程是否可以同时读取同一内存变量?多线程是否可以同时读取同一内存变量?只是对他进行读取不进行写入修改 那么在多线程中是否会因此而出错?itljl2012-12-23 00:14读可以,修改不可以。华玉欣2012-12-23 02:40原创 2015-02-10 15:24:15 · 18300 阅读 · 0 评论 -
CString/string char区别及其转化
利用MFC进行编程时,我们从对话框中利用GetWindowText得到的字符串是CString类型,CString是属于MFC的类。而一些标准C/C++库函数是不能直接对CString类型进行操作的,所以我们经常遇到将CString类型转化char*等等其他数据类型的情况。这里总结备忘于此!首先要明确,标准C中是不存在string类型的,string是标准C++扩充字符串操作的一个类。但是转载 2015-03-06 10:02:48 · 466 阅读 · 0 评论 -
二进制文件和ASCII文件有何区别
ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:ASC码: 00110101 00110110 00110111 00111000 ↓ ↓ ↓ ↓十进制码: 5 6 7 8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASC转载 2015-04-15 14:17:35 · 7315 阅读 · 0 评论 -
explicit防止隐式
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个AAA的对象。这样看起来好象很酷, 很方便。 但在原创 2015-04-15 16:38:50 · 521 阅读 · 0 评论 -
程序员学习编程的步骤
程序员学习编程的步骤 程序员学习编程的步骤 在中国,大多数程序员都是自学成材的,这其中的艰辛自不必多言,如果能够有一个正确的学习步骤,循序渐进,便能省却不少力气了. 1:如果你能够熟练的使用Windows的话,你就可以开始你的程序生涯了! 2:首先从C语言开始。有的朋友可能认为C语言太难了,应该从VB开始。虽然,对于一个初学者来说,用一些控件堆砌成一个小软件,是有一些成就感,原创 2015-01-15 14:14:43 · 1172 阅读 · 1 评论 -
m_hWnd 和 this指针
m_hWnd ① m_hWnd这个成员变量,最早是定义在类CWnd中,而且是类CWnd的第一个数据成员, 先看一下MSDN的解析: The handle of the Windows window attached to this CWnd. The m_hWnd data member is a public variable o转载 2014-12-11 09:49:19 · 575 阅读 · 0 评论 -
*****VS2008 动态库和静态库的生成和加载*****
VS2008 动态库和静态库的生成和加载 第一:动态库和静态库的生成:1) 新建一个生成dll工程: 文件->新建->项目->Win32->Win32控制台应用程序 输入项目名称:dllTest ,项目路径:D:\VC 确定 下一步 应用程序类型:选择DLL 完成2) 编写代码: 2-1) 增加一个转载 2014-12-02 22:16:35 · 3878 阅读 · 0 评论 -
构造函数失败
什么函数都有可能失败,构造函数也不另外,比如new一个对象或空间不成功。当构造函数失败的时候,其实很多时候我们不想这个对象被继续生成,这个时候就可以在构造函数里面抛出异常。C++规定构造函数抛出异常之后,对象将不被创建,析构函数也不会被执行,但已经创建成功的部分(比如一个类成员变量)会被部分逆序析构,不会产生内存泄漏。但有些资源需要在抛出异常前自己清理掉,比如打开成功的一个文件,最好关闭掉再抛出异转载 2014-12-02 20:30:35 · 1691 阅读 · 0 评论 -
栈溢出
stack overflow顾名思义,stack overflow 就是是栈溢出了。在进行数值运算时,我们常常要和运算结果的溢出打交道。数值运算结果可能上溢(overflow),也可能是下溢(underflow)。不过栈的溢出显然只可能是上溢,即栈空间被用完了。在提起“栈”(stack)这个概念的时候,千万不要忘记了它的兄弟“堆”(heap),也要切记不要把二者搞混了。 那原创 2015-01-08 20:53:06 · 896 阅读 · 0 评论 -
VDAL心得
1.尽量把该申请的内存都申请好,减少继续要申请的,该为全局变量的就弄为全局变量,但也防止栈k原创 2014-08-01 18:03:23 · 1134 阅读 · 0 评论 -
如何查找生成的dll出错原因
通常,当我们生成动态链接库dll后,直接放在所需要工程里面进行运行,有时候出问题了很难查出,有时甚至因为动态库导致原程序无法正常启动或运行。所以要学会调试dll工程。(1)将需要用到dll的项目工程可执行文件.exe放到dll工程中生成dll'的目录下下:(2)在dll工程中,菜单上选择项目-(工程名+属性)-配置属性-调试,在命令中加入.exe文件的执行路径。原创 2014-12-04 17:05:29 · 863 阅读 · 0 评论 -
dump文件产生和定位
(1)当.exe程序运行中出现异常挂掉后,就会产生dump文件,而不是工程下debug出错产生dump文件,即运行.exe文件出错产生dump。(2)要定位dump文件,需要满足五个要求:a. dump文件b. 动态链接库:.dll文件c.与动态链接库同时产生的.pdb文件d.生成动态链接库的工程不要有任何变化,即不能编译、改源码、改时间等。e.让以上三个文件处于同一目录下原创 2014-12-04 19:54:04 · 1516 阅读 · 0 评论 -
类的各种成员函数在类中是如何分配的?
个类,有成员变量:静态与非静态之分;而成员函数有三种:静态的、非静态的、虚的。那么这些个东西在内存中到底是如何分配的呢?以一个例子来说明:[html] view plaincopyprint?#include"iostream.h" class CObject { public: static int a; CObject(); ~CObject转载 2014-12-11 09:44:21 · 685 阅读 · 0 评论 -
MFC中LPTSTR、LPCSTR、LPCTSTR、LPSTR的含义
UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编 现存的所有文字而没有二义。 MBCS,它是多字节字符集,它是不定长表转载 2014-12-11 14:22:03 · 2593 阅读 · 0 评论 -
C++类中的对象在内存中的存放方式
现看下面的一个类Class A{Pulic:A();Int a;Int b;Int sun(int a1,int b1)// 计算 2 个数的和{Result a1+b1;}};调用的时候声明一个 A 类的对象,如 A a; A b; 那么在内存中对象 a 和对象 b 是怎样存在的呢?如下图:转载 2015-04-30 17:59:04 · 2024 阅读 · 0 评论 -
从64位库移植到32位库的总结
公司项目要求,将原64位系统下的代码移植到32位才能运行,由于现有64位代码依赖很多第三方库,,因而移植到32位需要重新编译,经验总结如下: (1)对应的第三方库可到各自官网下载相应源码; (2)针对每种库,根据32位系统下需要的编译器选择vs版本,如vs2008、vs2010、vs2012等,然后在相应的vs版本下进行库的编译; (3)可以话,最好对每种库生成静态库的形式,当然也原创 2015-07-23 15:43:25 · 1347 阅读 · 0 评论 -
explicit
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。外文名explicit性 质形容词同义词expressed释 义明晰的,明确的,毫不隐瞒的,转载 2015-07-24 09:01:51 · 578 阅读 · 0 评论 -
C与C++中结构体的区别,C++中结构体和类的区别
C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。C++中的结构体和类的异同:一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数; 也就是说在C转载 2015-11-07 15:19:07 · 592 阅读 · 0 评论 -
C语言结构体所占用的字节数如何计算
结构体的数据类型的有点多我们就不啰嗦了,直接来看相同数据结构体的几种书写的格式吧。 格式一: 01.struct tagPhone 02.{ 03. char A; 04. int B; 05. short C; 06.}Phone; 格式二: 01.struct tagPhone 02.{ 03.转载 2015-11-18 18:47:56 · 22150 阅读 · 4 评论 -
fwrite和fread函数的用法小结(怎么样以二进制形式保存和读取文件)
该文非博主原创,转载于http://blog.csdn.net/sky_qing/article/details/12783045fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。[cpp] view plaincopy#include size_t frea转载 2015-11-18 18:25:43 · 5450 阅读 · 0 评论 -
std::queue用法
int main(int argc, char *argv[]){ queue myQ; for(int i=0; imyQ.push(i); for(int i=0; i{ cout myQ.pop(); } return 0;}queue是STL的队列,有FIFO的特性。上面的程序是将0~9十个数字压入队列,然后依次出对queue的成员方转载 2016-03-10 15:37:34 · 4803 阅读 · 0 评论 -
静态库与动态库相互调用
测试场景,Test,lib1,lib2,dll1,dll2,分为下面四种情况:1、Test->lib1->lib2lib1编译自己的代码,对lib2的部分,只需要lib2的头文件,对lib2的代码实现,使用占位符关联。生成Test连接的时候,把lib1的代码实现包含进来,再递归,把lib1中关联lib2的代码实现也包含进来。运行Test的时候,不再需要lib1和lib2。2转载 2017-02-09 17:51:30 · 2549 阅读 · 0 评论 -
深入理解指针类型间的转换
当我们初始化一个指针或给一个指针赋值时,赋值号(=)的左边是一个指针,赋值号(=)的右边是一个指针表达式,在绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向的类型是一样的。例一:1、 float f=12.3;2、 float*fptr=&f;3、 int *p;在上面的例子中,假如我们想让指针p指向实数f,应该怎么搞?是用下面的语句吗?转载 2017-06-03 11:06:11 · 449 阅读 · 0 评论 -
Google开源命令行参数解析库gflags
今天写程序时需要写一个命令行解析程序,于是网上搜索getopt()的实现代码,但搜到的信息基本上是如何使用getopt(),而系统又是Windows的;于是想到了以前项目中使用到的Google开源命令行解析库gflags。google开源的gflags是一套命令行参数解析工具,他可以替代getopt(),使用起来更加方便灵活,包括支持C++内建的类型如string,gflags还支持从环境转载 2015-07-21 17:25:20 · 2775 阅读 · 0 评论 -
Windows 中OpenBlas 的安装 - Windows 32bit 适用
Windows 中OpenBlas 的安装1. 准备OpenBlas version:V-0.2.12IDE:Visual Studio 2008OS: Win72.安装步骤2.1 下载OpenBlas,解压至路径my_path,可更改、简化解压文件夹名,以方便后续路径的引用,例如:2.2 前往MinGW官网(http://www转载 2015-07-21 09:24:27 · 1831 阅读 · 0 评论 -
文件读写函数
EEK_SET 将读写位置指向文件头后再增加offset个位移量。SEEK_CUR 以目前的读写位置往后增加offset个位移量。SEEK_END 将读写位置指向文件尾后再增加offset个位移量。当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。下列是较特别的使用方式:1) 欲将读写位置移到文件开头时:lse原创 2015-04-30 09:46:16 · 975 阅读 · 0 评论 -
void及void指针含义的深刻解析
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,转载 2015-05-13 09:41:24 · 405 阅读 · 0 评论 -
回调函数
在看LWIP时,见到用回调函数,再看某老外公司OPC源代码时,见到用回调函数。看我国内某些代码(我公司软件等)时没用到。于是,我对回调函数产生了很大的好奇。以前,我写VC程序时用到过回调函数,但是没有用C语言来使用。最近,看到国外大量的经典代码中广泛使用了回调函数(LWIP、某两个公司的OPC程序等),都是C语言来实现的,而不是VC windows程序中别人实现自己使用的那种。为了弄明白这种函转载 2015-05-13 08:58:34 · 464 阅读 · 0 评论 -
AStyle代码格式工具
使用AStyle进行代码格式化 在日常的编码当中,大家经常要遵照一些设计规范,如命名规则、代码格式规范等等。或者大家在看一些别人写的代码时,若代码格式不是很规范时,看起来是比较麻烦的。今天就给大家介绍一款名为AStyle的代码格式化工具,Astyle是一个开源代码格式化工具,可以使大家在日常开发中非常方便的调整大家的代吗格式。支持多种开发语言,支持多种格式化风格,本转载 2015-05-14 18:59:38 · 2090 阅读 · 0 评论 -
AStyle2.02在VS2008下的使用
astyle是一个常用的开放源码工具。它可以方便的将程序代码格式化成自己想要的样式而不必人工修改。本来嘛,作为高等生物应该优先去做一些智慧的事情,而不是把时间消耗在机器可以完美完成的事情上。想要立刻开始?请先去主页http://sourceforge.net/projects/astyle下载最新版本。可以选择二进制版本,也可以下载源码自行编译。总之得到可执行文件后请将astyle放在Pa转载 2015-05-14 19:26:38 · 579 阅读 · 0 评论 -
VS2010 VS2012调试时显示加载符号导致调试特别慢
打开"调试"-->"选项"看下图:将那个"勾"去掉确定即可!按下F5调试,瞬间开始了。转载 2015-05-28 14:46:17 · 1431 阅读 · 0 评论 -
如何使用vector的reserve和resize方法
reserve和resize是vector里两个很重要的方法,有效地使用这两个方法可以减少reallocate memory的次数,提高程序的性能,所以还是有必要去研究一下的,先来看一段简单的代码吧。stdafx.h[html] view plaincopy// stdafx.h : include file for standard s转载 2015-06-29 17:55:00 · 1715 阅读 · 0 评论 -
VS2012 下编译boost1.52
1. 下载boost_1_52_0.7z http://sourceforge.net/projects/boost/files/boost/1.52.0/2. 解压缩到 d:\boost 目录下3. 编译bjam(1)开始菜单->所有程序->Microsoft Visual Studio 2012->Visual Studio Tools->Developer Co转载 2015-07-20 17:33:43 · 464 阅读 · 0 评论 -
C/C++基本数据类型所占字节数
关于这个基本的问题,很早以前就很清楚了,C标准中并没有具体给出规定那个基本类型应该是多少字节数,而且这个也与机器、OS、编译器有关,比如同样是在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节。所以int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):转载 2014-12-16 11:26:44 · 676 阅读 · 0 评论 -
c++中的 extern "C"
比如说你用C 开发了一个DLL 库,为了能够让C ++语言也能够调用你的DLL 输出(Export) 的函数,你需要用extern "C" 来强制编译器不要修改你的函数名。通常,在C 语言的头文件中经常可以看到类似下面这种形式的代码:C代码 #ifdef __cplusplus extern "C" { #endif /**** so原创 2014-12-16 10:37:08 · 462 阅读 · 0 评论