C/C++
cgnerds
这个作者很懒,什么都没留下…
展开
-
GCC/G++编译参数含义
GNU CC(简称gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++、Object C、Jave等多种语言编写的程序。gcc又可以作为交叉编译工具,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,非常适合在嵌入式领域的开发编译,如常用的arm-linux-gcc交叉编译工具 通常后跟一些选项和文件名来使用 GCC 编译器。gcc 命令的基本转载 2010-05-10 15:26:00 · 23130 阅读 · 0 评论 -
VC打开本地文件对话框
#ifdef WIN32 #include #endifchar* openLocalFile(){ const int bvhFileNameLen = 256; char bvhFileName[bvhFileNameLen] = ""; OPENFILENAME openBvhFile; memset(&openBvhFile, 0, sizeof(OPENFILENA原创 2011-11-29 17:36:44 · 1176 阅读 · 0 评论 -
C++开源库
转自:http://www.cnblogs.com/kanego/archive/2011/11/10/2244957.htmlC++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,转载 2011-11-10 23:22:28 · 1014 阅读 · 0 评论 -
静态编译动态编译;静态链接动态链接;静态库和动态库
静态编译:将所有的dll和主程序都编译到一个主程序里面。动态编译:编译的结果为,主程序是主程序,各个模块是各个模块。其中静态编译和动态编译是可以设置工程属性动态设置的!静态链接:静态链接已经把库中的函数写入到可执行文件内部了。也即静态链接把需要的库函数放进了你的exe之中。所以静态编译必然通过静态链接来实现。动态链接:动态链接就是只把库中函数的定位信息写入到可执行文件了,然后在运行转载 2011-12-07 10:53:39 · 960 阅读 · 0 评论 -
小数点输出精度与iomanip解析
转自:http://www.cnblogs.com/ComputerG/archive/2012/02/08/2342302.html(一)小数点输出精度 有时,为了输出一个满意的小数点,经常搞的手忙脚乱的。这个东西十分的基础,但是又不是经常用到,所以有时要使用的时候都会要查阅一番。 首先添加#include,然后再完成以下的操作。1、输出n转载 2012-02-08 14:04:22 · 1105 阅读 · 0 评论 -
C++程序中获取不带文件路径和后缀的文件名
string getName(const char* full_name){ string file_name = full_name; const char* mn_first = full_name; const char* mn_last = full_name + strlen( full_name ); if ( strrchr( full_name, '\\' ) !=原创 2011-09-22 14:55:49 · 6957 阅读 · 0 评论 -
Ogre及C++程序日志文件
static void My_Log(float rx, float ry, float rz){ char* filename="my_test1.log"; FILE *fo; fo = fopen(filename,"a"); if(fo == 0){ return; } fprintf(fo,"BVH: x:%f; y:%f; z:%f \r\n",rx,ry,r原创 2011-10-20 19:15:22 · 1104 阅读 · 0 评论 -
C++程序员的阅读清单
转自:http://blog.jobbole.com/21544/多读一些优秀的书籍,对于开发者稳固编程基础、提高编程技能有很大帮助。但是,大多时候,初学者不知道应该读什么书入门,有一定基础的开发者不知道如何进阶。本文总结了一个C++优秀书籍清单,希望能够为你带来一定的帮助。这些书大多数都有中文版,并且可以很容易在网上找到。 阶段 1《Essential转载 2012-06-11 23:05:43 · 1034 阅读 · 0 评论 -
最简单的Ogre系列之五——AABB场景查询
在球体场景查询的基础上,增加了AABB场景查询,并给与了碰撞次数的显示。需要设置的全局变量是int mCollisionNumber;// OgreBitesOgreBites::ParamsPanel* mCollisionPanel;下面的函数是设置碰撞次数的显示//-----------------------------------------------原创 2012-06-14 16:32:55 · 3046 阅读 · 0 评论 -
C++面试之概率问题
一 利用不均匀硬币产生等概率问题描述:有一枚不均匀的硬币,抛出此硬币后,可用foo()表示其结果。已知foo()能返回0和1两个值,其概率分别为0.6和0.4。问怎么利用foo()得到另一个函数,使得返回0和1的概率均为0.5。问题分析:分析连续抛出两次硬币的情况,正反面的出现有四种情况,概率依次为:(1) 两次均为正面:0.6*0.6=0.36(2)第一次正面,第二次反面:0.6原创 2012-10-14 00:08:19 · 3981 阅读 · 0 评论 -
C++面试之GetMemory问题
题目一:void GetMemory( char *p ){ p = (char *) malloc( 100 );}void Test( void ) { char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( str );}【运行错误】传入GetMemory(char原创 2012-10-18 11:09:00 · 20037 阅读 · 2 评论 -
C++面试之类的sizeof大小
以前写过查看C++数据类型的字节数,但实际应用中我们更关心的是struct和class的大小。首先来看空类的大小,如下:class VoidClass{};运行程序,发现sizeof(VoidClass)结果为1。这里涉及到类的实例化的概念,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化,所以编译器会给空类隐含的添加一个字节,这样原创 2012-09-27 12:24:39 · 1858 阅读 · 1 评论 -
最小生成树(Minimum Spanning Trees)
转自:酷~行天下http://mindlee.net/2011/11/16/minimum-spanning-trees/ 假设要在 n 个城市之间建立通讯联络网,则连通 n 个城市只需要修建 n-1条线路,如何在最节省经费的前提下建立这个通讯网?答案就是:最小生成树。术语描述是:在 e条带权的边中选取 n-1 条边(不构成回路),使“权值之和”为最小。 如右图是一转载 2012-10-28 17:00:31 · 2968 阅读 · 0 评论 -
实时仿真软件Sofa的安装(Windows+VS2008)
SOFA(http://www.sofa-framework.org/home)是一个主要面向实时仿真的开源程序框架,更注重医学仿真。它的目的在于帮助研究社区开发新的算法,但是也能够作为有效的原型开发工具。基于先进的软件架构,它允许:(1)通过整合新算法和SOFA中已存在的算法,创建复杂和改进的仿真;(2)修改仿真的大部分参数-变形行为(deformable behavior),表面表示,原创 2013-03-17 21:55:21 · 6174 阅读 · 14 评论 -
Windows下安装Vim插件管理Vundle
VIM是编辑器之神,这个就不用说了,越使用越会体会到VIM的强大与便利。但是它的强大建立在众多插件组合之上,而Vim本身缺乏对插件的有效管理,安装插件并配置_vimrc文件非常不便。gmarik受到Ruby的bunler的启发,开发了vundle这个vim插件,可以将插件分到不同的目录管理,更厉害的是可以很简单的添加需要安装的插件,然后通过指令简单的安装和更新,下面就介绍VIM和Vundle的安装原创 2013-03-05 10:10:17 · 43958 阅读 · 5 评论 -
vc中调用exe文件并传递参数
1.调用SHELLHINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters,转载 2011-10-25 16:23:28 · 2200 阅读 · 0 评论 -
Boost::Thread使用示例
(1)最简单方法#include #include boost::mutex io_mutex;void hello(){ std::cout<<"Hello world, I'm a thread!"<<std::endl;}int ma原创 2011-07-06 14:48:28 · 45991 阅读 · 4 评论 -
vector 容器使用时应该注意的内存分配问题
<br /><br />本文说明了vector 容器使用时应该注意的内存分配问题,原理说的比较详细,对于初学者比较适用。<br />本文描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。本文将讨论如何使用 STL 的 vector 进行内存的再分配。<br /><br /> 这里描述的是一种很常见的情况:当你在某个缓存中存储数据时,常常需要在运行时调整该缓存的大小,以便能容纳更多的数据。传统的内存再分配技术非常繁琐,而且容易出错:在 C 语言中,转载 2011-05-04 09:48:00 · 2639 阅读 · 1 评论 -
G++(GNU C++)安装及使用
一 安装 安装步骤: 1、下载 Cygnus 的G++编译器(http://www.claremontmckenna.edu/math/ALee/g++/full.exe),并保存到E盘(或其它任意盘),格式为E:full.exe。 2、直接运行该文件,可能需要十几分钟的时间(中间会有停顿甚至没有任何提示性图片或者符号,需要耐心等待哦)。 或者Win + R ,输入原创 2010-05-10 09:58:00 · 14101 阅读 · 4 评论 -
.h头文件 .lib库文件 .dll动态链接库文件关系
<br />.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。<br />附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件。如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。<br />.h .lib .dll三者的关系是:<br />H文件作用是:声明函数接口<br />DLL文件作用是: 函数可执行代码<br />当我们在自己的程序中引用了一个H文件里的函数,编链器怎么知道转载 2010-12-07 09:09:00 · 1009 阅读 · 0 评论 -
VC 2010下安装OpenCV 2.0/2.1/2.2
一 安装所需要的软件安装VC++ 2010 ExpressVisual C++ Express是微软推出的一款免费集成开发环境,如果你没有足够资金购买Visual C++,你可以使用Visual C++ Express。本安装说明撰写时,最新的版本是Visual C++ 2010 Express.Visual C++ 2010 Express可以从微软网站下载安装(http://www.microsoft.com/express/product/default.aspx )。安装OpenCV从 http:原创 2010-12-21 20:18:00 · 13589 阅读 · 13 评论 -
无法解析的外部符号的 3 种可能
<br /><br />1. lib 文件未引入。可使用“#pragma comment(lib, “winsock.lib”) ”语句添加 lib 引用,也可在项目依赖里添加。<br />2. 类方法的实现未加类标识。如, “CTest::Connect(void) { … }” 写成了 “Connect(void) { … }”。<br />3. 缺少 obj 文件。在项目里添加“包含路径”:C:/curl/lib/release-dll/*.obj。转载 2010-12-22 16:56:00 · 608 阅读 · 0 评论 -
在VS2010中添加Flash
<br /> <br />一、准备工作<br />第一步:下载并安装Adobe Flash Player。<br />从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的FlashPlayer(大约为2.66M),并安装。对于Windows 32位系统,其默认安装目录为:C:/WINDOWS/system32/Macromed/Flash/;对于64位系统,为:C:/Windows/SysWOW64/Macromed/Flash。<br /> F原创 2011-01-17 17:51:00 · 10283 阅读 · 7 评论 -
C内存对齐详解
<br /><br />一、什么是对齐,以及为什么要对齐:<br /><br />1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。<br /><br />2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但转载 2011-01-17 14:31:00 · 673 阅读 · 0 评论 -
连接错误error LNK2001
<br />出现error LNK2001,问题是项目类型不对,如果重新建立项目将费时费力,其实只要进行如下两步的修改就可以轻易的将Win32程序改为控制台程序(反之亦然)。<br />(1)项目->属性->配置属性->链接器->系统<br />将子系统“Windows (/SUBSYSTEM:WINDOWS)”修改为“控制台(/SUBSYSTEM:CONSOLE)”。<br />(2)项目->属性->配置属性->C/C++->预处理器<br />将预处理器定义中的_WINDOW删除,并添加_CONSOLE原创 2011-05-12 23:29:00 · 695 阅读 · 0 评论 -
C++函数后加const的意义
CPointSource &operator=(const CPointSource &point_source){ m_attenuation = point_source.m_attenuation; m_lambda = point_source.m_lambda; m_point = point_source.m_point; m_wave = point_source.m_wave; return *this;} 一些成员函转载 2011-04-06 10:15:00 · 735 阅读 · 0 评论 -
C++经典书籍热推-IASN·爱朔
<br /><br />1.原书名: Programming: Principles and Practice Using C++ 中文名: C++程序设计原理与实践(C++之父最新力作) 作者:(美)Bjarne Stroustrup<br />内容简介:本书是经典程序设计思想与c++开发实践的完美结合,是c++之父回归校园后对c++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功转载 2011-05-28 15:11:00 · 944 阅读 · 0 评论 -
如何剖析一个类
<br />阅读组内代码也好、开源代码也好,在OOP程序设计中,对代码中各个类的理解至关重要。经过大量的阅读与分析后,发一些小技巧可以加快与加强自己对代码的理解,现整理如下:<br />如何剖析一个类:<br />1、先看本类继承了哪些基类和实现了哪些接口。<br /> 类的第一行往往包含的是继续基类的信息以及实现接口的信息,所以在一开始就要弄清楚本类所依赖的类。我们假设代码的命名都是规范的,根据所继承基类的名字和接口的名字,我们可以暗自推测本类和基类的关系,以及本类实现的功能。<br />2、关注成员变转载 2011-04-18 22:53:00 · 556 阅读 · 0 评论 -
VC++ 2008 常用操作
(1)恢复默认布局有时vs2008会出现界面worksapce在右边,toolbox在左边的情况,这样看起来很不舒服,也不习惯,通过以下方法即可改变:tools---->import and export settings wizard,选择reset all settings ,下一步,保存设置,下一步,选择visual c++ development settings,完成。界原创 2011-06-12 10:43:00 · 784 阅读 · 0 评论 -
内存访问越界问题
转:http://blog.vckbase.com/arong/archive/2009/12/30/40598.html1. 原理分析<br />经常有些新C++程序员问:C++的类的成员个数是不是有限制,为什么我加一个变量后程序就死了?或者说:是不是成员变量的顺序很重要,为什么我两个成员变量顺序换一换程序就不行了?凡此种种之怪现象,往往都是内存访问越界所致。<br /><br />何谓内存访问越界,简单的说,你向系统申请了一块内存,在使用这块内存的时候,超出了你申请的范围。例如,你明明申请的是100字节转载 2011-04-19 20:43:00 · 797 阅读 · 0 评论 -
(转)函数名字修饰(Decorated Name)方式
<br />函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多数情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会自动区分他们。当然,在某些情况下需要指定函数的名字修饰,例如在C++程序中,为了让LINK程序或其他工具能够匹配到正确的函数名字,就必须为重载函数和一些特殊的函数(如构造函数和析构函数)指定名字装饰。另一种需要指定函数的名字修饰的情况是在汇编程序中调用转载 2011-04-25 15:51:00 · 1124 阅读 · 0 评论 -
.dll,.lib,.def 和 .exp文件
<br /><br /> 简要的介绍一下在微软开发工具中(VC)静态链接库和动态链接库生成过程中出现的.dll .lib .def 和 .exp文件类型。windows平台上可执行文件可能是一个.exe文件也可能四个.dll文件。当然也有一些比较特别的exe或者dll文件,不过他们有其他样式的后缀名比如屏保程序(.scr),ActiveX DLL 用的.ocx 还有各种驱动使用的各种扩展名。这里我们不讨论.com 和一些脚本文件比如.bat .cmd等,虽然他们仍然是可执行文件。<br /> 库就转载 2011-05-03 15:08:00 · 21738 阅读 · 0 评论 -
使用VS2008创建类的DLL
因为项目合作的关系,需要将源代码转化为DLL。原本以为会很复杂,结果试验了一下,简单的吓人。(1)编译类的DLL。打开Visual Studio,文件→新建→项目→Win32 控制台应用程序,设置项目名称为MyDLL,应用程序类型选择DLL(D),附加选项选择空项目(E)。头文件如下所示:/**********************************************原创 2013-07-05 11:30:38 · 3523 阅读 · 1 评论