C/C++
文章平均质量分 57
changbaolong
这个作者很懒,什么都没留下…
展开
-
(转)fatal error C1853: precompiled header file is from a previous version of the compiler, or the pre
预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is fr转载 2013-12-27 10:59:07 · 3238 阅读 · 0 评论 -
sizeof解析
1、C++中的sizeof操作符,是指对应变量在内存中占有的字节数。2、#pragma pack (1),表示字节对齐的字节数是1。3、struct结构体,分配空间的时候,各个变量的地址是相邻的,每次分配的单元空间为n(默认8)字节;如果多个变量加起来的字节数还没够n的话,这几个变量就会都在相同的分配单元中。4、分配原则:判断struct所属的类型的字节数和n(1、2、4、8、16)的原创 2013-06-24 16:54:55 · 505 阅读 · 0 评论 -
Effective STL 03 数组与vector
************************************************时间:2013年06月08日作者:常保龙地点:核所C105************************************************ 向容器中插入元素的是对象的拷贝,去除元素的也是对象的拷贝,这是STL的方式。原创 2013-06-08 21:00:23 · 960 阅读 · 0 评论 -
Effective STL 00 术语
************************************************时间:2013年06月07日作者:常保龙地点:核所C105************************************************ 零零散散地看了很多次Effective STL这本书,但是很难有一个系统的认识和整体的把握,因此决定从今天原创 2013-06-07 22:54:15 · 1328 阅读 · 0 评论 -
Effective STL 01 如何选择容器
************************************************时间:2013年06月08日作者:常保龙地点:核所C105************************************************如何选择容器?1、如果容器中的数据内存布局需要兼容C,只能使用vector2、如果不希望容器底层使用引用计数,就不原创 2013-06-08 10:54:13 · 1015 阅读 · 0 评论 -
虚函数默认参数选择
#include class Base {public: virtual void f(int a = 1) { std::cout << "Base:: " << a << std::endl; }};class Derived: public Base {public: virtual void f(int a = 2) { std::cout << "Deri原创 2013-05-12 10:26:20 · 866 阅读 · 0 评论 -
overlay实现帧动画
转载自:http://blog.csdn.net/howlet2/article/details/4835061 ogre Dome上有动态纹理的效果演示,这里讲的不是移动或旋转纹理坐标产生的纹理动态效果,而是由几张图片更换显示产生的动画效果,这种效果在2d中指的是帧动画。首先要准备好一组图片,如animotion1.jpg, animotion2.jpg, animotion3.jpg,转载 2013-05-08 20:00:53 · 691 阅读 · 0 评论 -
无法解析的外部符号 "public: virtual struct CRuntimeClass
无法解析的外部符号 "public: virtual struct CRuntimeClass * __thiscall CMessageBox::GetRuntimeClass(void)const "以下原因是会引起上述错误的: 1,在.h文件中写了DECLARE_DYNAMIC,而在.cpp文件中没有写IMPLEMENT_DYNAMIC 2,在.h文件中写了DECLAR原创 2013-01-08 10:14:01 · 17902 阅读 · 10 评论 -
三维空间中的旋转变换
1、绕坐标轴旋转的公式: (1)绕Z轴旋转 (2)绕X轴旋转 (3)绕Y轴旋转 以上的矩阵变换公式为 : P' = P * mat; 2、绕任意轴旋转的公式: 给定具有单位长的,则物体绕OA轴旋转变换的矩阵表示可确定如下: 3、绕任意轴旋转在Ogre中实现Ogre::Matrix3 I原创 2012-12-17 13:48:18 · 23678 阅读 · 2 评论 -
OpenGL多视口分割
OpenGL实现的多视口分割程序,同时也是OpenGL的一个简单的框架,可以根据自己的需要进行修改。 VS2008的环境配置,代码如下:// main.cpp#include #include "glFrame.h"int main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMo原创 2012-12-10 20:52:17 · 5323 阅读 · 2 评论 -
场景查询
场景管理的一个重要的功能就是场景查询,而ogre支持的场景查询方法包括:1、光线查询(Ray Queries);2、球体查询(Sphere Queries);3、边界盒查询(Bounding-Box Queries);4、边界平面查询(Bounding-Plane Queries);5、相交查询(Intersection Queries)。 光线查询: RaySc原创 2012-12-11 13:56:10 · 1050 阅读 · 0 评论 -
const iterator与const_iterator
const iterator表示iterator是const的,即iterator本身不能改变或者说iterator指针不能改变,但是iterator所指向的内容可以改变。比如, const std::vector::iterator iter = vec.begin(); *iter = 10;是对的,改变iter指向的内容;但是++iter是错误的,因为原创 2012-11-23 12:21:25 · 1574 阅读 · 0 评论 -
const指针
const与指针结合,实际意义见下面的例子: char ch[] = "ch"; char* ptr = ch; // non-const pointer, non-const data const char* ptr = ch; // non-const point原创 2012-11-23 12:03:54 · 533 阅读 · 0 评论 -
参数传递深入分析
C++参数传递分为两种:pass-by-value和pass-by-reference。二者适合不同的场合,在数据为只读的情况下讨论如下:1、对于内置类型,比如int,pass-by-value更高效;2、对于自定义类型,比如class,pass-by-reference-const更好,因为class有构造函数和析构函数,按值传递,需要构造一个对象的副本,传递的是对象的一个副本,需要原创 2012-11-23 13:19:59 · 452 阅读 · 0 评论 -
C++组成部分
C++是一种编程语言,但又不是一种单一的编程语言,它可以包含以下四种子语言,也即C++的四个组成部分:1、C部分。C语言的基本语法,内置类型、预处理、数组、指针等。2、面向对象部分。类,封装、继承、多态、虚函数等。3、泛型编程。以模板为基础,减少运行期时间。4、STL。容器、迭代器、算法等程序库,安全、便捷。原创 2012-11-23 11:00:36 · 3078 阅读 · 0 评论 -
C/c++中内存拷贝函数memcpy详解
原型:void*memcpy(void*dest, const void*src,unsigned int count); 功能:由src所指内存区域复制count个字节到dest所指内存区域。 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。 举例: [cpp] view plaincopyp转载 2013-08-28 09:35:49 · 15982 阅读 · 1 评论 -
静态库和动态库的区别
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的转载 2013-08-28 10:01:53 · 958 阅读 · 0 评论 -
动态链接库、静态库区别与VS2005项目相关设置
一、动态链接库、静态库区别 二、VS2005项目相关设置 三、#pragma预处理指令 动态链接库、静态库区别 1、动态链接库(Dynamic Linked Library) Windows系统平台上你可以将独立的程序模块创建为较小的DLL(Dynamic Linkable Library)文件,并可对它们单独编译和测试。在运转载 2013-08-28 10:21:22 · 970 阅读 · 0 评论 -
Ogre-渐变背景色(gradient background)的实现
转载自:http://blog.csdn.net/hefee/article/details/6287341背景色在ogre里面是通过ViewPort类中的setBackgroundColour()这个成员函数实现的,不过此类只提供给单一颜色的设置!! 不过,我们可以通过间接的方法去创建渐变的背景色,下面详细介绍: 1. 重构Ogre::Rect转载 2014-01-05 22:47:08 · 2463 阅读 · 1 评论 -
运行时和编译时的安全性检查
发布日期 : 8/17/2004 | 更新日期 : 8/17/2004Microsoft Corporation适用范围:Microsoft® Visual C++® .NET 2003Microsoft® Visual C++® Toolkit 2003Microsoft® Visual Studio® .NET摘要:说明 Visual C++ 编译器和库在帮转载 2013-12-30 21:40:18 · 2017 阅读 · 0 评论 -
连接OPC服务器
CString strError; HRESULT hr=CoInitializeEx(NULL,COINIT_MULTITHREADED); CString strNode = _T("172.16.2.68"); CString strProID = _T("Kingview.view"); if (strNode.IsEmpty()) // local server { CL转载 2013-12-13 16:19:58 · 3147 阅读 · 1 评论 -
Run-Time Check Failure #2
Run-Time Check Failure #2 一般是栈被破坏,代码可能有缓冲区溢出一类的问题。Run-Time Check Failure #2 - Stack around the variable 's' was corruptedThis problem is caused when you try to write too much data转载 2013-11-20 21:58:40 · 8072 阅读 · 0 评论 -
并行编译加快 VS C++ 项目的编译速度
最近编译的项目都比较大,话说自己的电脑配置还行,但编译所花的时间还是很长,遇到需要重新编译整个项目的时候真的有回宿舍睡一觉的冲动。昨天一不小心被我发现了一款软件Xoreax IncrediBuild 今天用了一下,实在是太爽了,我把我们办公室的机器都连了起来,其中还有一台工作站,总共加起来22个CUP核,我试了一下实在是太拉风了。其实这款软件已经推出很久了,只是之前接触的项目都比较小,转载 2013-11-20 15:47:47 · 1473 阅读 · 0 评论 -
剖析ifstream打开含中文路径名文件失败的原因
最近写程序的时候遇到了使用ifstream打开含中文路径文件时失败的问题,在网上翻了一下,发现这是一个普遍遇到的问题,在很多人的博文中也都给出了一些解决技巧,但大多是转载的东西,很少对这个问题引发的原因有一个清晰、全面的解释。因此,我觉得有必要对该问题引发的原因作一个详细的剖析,希望对遇到同样问题的朋友们能有所帮助。首先,用一个简单的例子来重现一下我所遇到的问题:(1)在VS2008的“P转载 2013-11-19 09:37:58 · 1031 阅读 · 0 评论 -
C++为什么用引用
转载自:http://hi.baidu.com/chen_767/item/bf580c87c3d7bd28100ef3c3引用类型通常被用于主子函数间需要互相传递大量数据的设计之中, 从而减少大量数据经过堆栈的复制.在C语言中, 主子函数要对非全局变量实施写操作时, 只能通过传递实(形)参的指针(地址)来实现.直接使用指针很容易造成地址溢出的错误, 而用C++语言编制的同类程序中转载 2013-10-20 21:58:14 · 1341 阅读 · 0 评论 -
C++ 线程安全的单例模式
C++ 线程安全的单例模式废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性转载 2013-10-20 21:16:33 · 662 阅读 · 0 评论 -
整数的素数和分解问题
问题描述歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之和。 对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。 对于一个给定的整数,输出所有这种素数和分解式。 注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式)。 例如,对于整数8,可以作为如下三种分解: (1) 8 = 2 +原创 2013-10-16 10:49:03 · 1846 阅读 · 0 评论 -
比较两个数大小的宏
1、#define MAX(a,b) (((a) > (b)) ? (a) : (b))2、#define MAX(a,b) (((((a) - (b)) >> 31 ) & 0x1) ? (a) : (b))原创 2013-10-07 14:29:58 · 6430 阅读 · 1 评论 -
堆和栈
内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结堆和栈的区别一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回转载 2013-09-05 11:00:36 · 624 阅读 · 0 评论 -
C++函数CString::find
C++ STL里提供了很多字符串操作的函数,下面的字符串查找方面的部分函数用法简介。1、find()查找第一次出现的目标字符串:/** Author: mybestwishes* Created Time: 2011/4/9 15:56:44* File Name: find.cpp*/#include #include usin转载 2013-09-10 21:41:25 · 7770 阅读 · 0 评论 -
开源日志库<log4cplus+VS2008使用>整理
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://pyhcx.blog.51cto.com/713166/143549本文出自 “碧海笙箫” 博客,请务必保留此出处http://pyhcx.blog.51cto.com/713166/143549一.简介 log4cplus是C++编写的开源的转载 2013-08-30 17:10:23 · 782 阅读 · 1 评论 -
调试,测试与日志
问题“程序的显示看起来有点问题,你能不能修改一下?”“没问题,改完我就提交给你。”“不会太久吧?”“5分钟就够了!”在软件开发过程中,这种场景屡见不鲜,但是,看起来很见的任务,其实往往不是那么简单。当修改了部分代码之后,程序不是像我们想象的那样工作,奇奇怪怪地问题开始出现,我们开始设置一个个的断点,一遍一遍地重复执行,眼睛紧紧盯着显示器上的监视窗口,时间在飞快地流逝转载 2013-08-30 16:27:08 · 675 阅读 · 0 评论 -
c++程序员必看的书
C++程序员应看的书,这些书无须全部看了,不过如果你连一本都没阅读过,至少你不是个成熟的C++程序员,要想提升应该对原著有深入理解。纸质书籍类: 1、C++程序设计语言(特别版十周年中文纪念版)2、C++ Primer中文版(第4版)3、深度探索C++对象模型4、C++语言的设计和演化5、C++标准程序库:自修教程与参考手册6、STL源码剖析7、C++设转载 2012-11-23 09:45:25 · 2536 阅读 · 0 评论 -
单例模式——返回引用
reference-returning函数如下:class A{......};A& RefA(){ static A a; return a;} reference-returning函数是单例模式的一种常见实现手法。原创 2012-12-04 12:57:24 · 1891 阅读 · 0 评论 -
auto_ptr
C++提供了std::auto_ptr,即“智能指针”,是个“类指针(pointer-like)对象”,其析构函数自动对其所指对象调用delete,因此auto_ptr充当资源管理者的角色,属于管理对象,而且用被管理对象进行初始化。 如果多个auto_ptr同时指向同一对象,对象会被删除一次以上,会出现“未定义行为”。为了预防这个问题,auto_ptr有一个不寻常的性质:若通过拷贝构原创 2012-11-28 16:37:13 · 347 阅读 · 0 评论 -
提供c/c++源码的网址
1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts--提供数以百计的C和C++脚本和程序。所有程序都分为不同的类别。 3、http://www.planetsourcecode.com/v原创 2011-11-16 21:27:48 · 765 阅读 · 0 评论 -
方法学之Java的本质
Java本身是一种设计的非常简单,非常精巧的语言,所以Java背后的原理也很简单,归结起来就是两点:1、JVM的内存管理理解了这一点,所有和对象相关的问题统统都能解决2、JVM Class Loader理解了这一点,所有和Java相关的配置问题,包括各种App S转载 2011-10-16 23:21:55 · 607 阅读 · 0 评论 -
简述new和malloc的区别
为什么在C++语言中要增加运算符new/delete?为什么在C++语言中不把malloc/free删除掉呢?===================================================================================原创 2011-08-20 17:23:05 · 1191 阅读 · 0 评论 -
对象的动态分配
对象的动态分配(Dynamically Allocated Object) 1 、对象的分类 ① 全局对象( Global Object ) Controlled by System ②转载 2011-08-08 19:47:29 · 994 阅读 · 0 评论 -
乱码的处理-程序员永远无法避免的话题
乱码的处理-程序员永远无法避免的话题 为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程。汉语编程是怎么回事我也不大清楚,应该是前年吧,我一朋友转载 2011-07-30 09:47:05 · 756 阅读 · 0 评论