
C++
文章平均质量分 90
Sarkuya
WebGL程序猿
展开
-
C语言函数内存分配机制及函数栈帧详解
本文考查了系统为函数及其形参、局域变量分配内存的具体细节,解释了函数栈帧的含义及其特点,指出并分析了从函数中返回局域变量的指针的潜在风险,进而揭示函数栈帧的共享特性,最后对这些底层细节进行了归纳总结,为我们更好地掌握并高效使用C语言的指针打好基础。原创 2021-08-31 18:56:28 · 5112 阅读 · 0 评论 -
一个灵活通用的GNU makefile
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、自定义模块math二、主程序HelloMath三、主角makefile四、赏玩五、结语六、参考文献前言让我们通过编译一个简单的使用自己开发的模块的C语言程序来看看GNU make到底有多灵活。一、自定义模块math首先是头文件math.h:#ifndef math_h#define math_hint sum(int a, int b);#endif /* math_h */其实现math.c文件原创 2021-07-31 06:02:46 · 1507 阅读 · 0 评论 -
char远非仅仅是字符
char“不是”表示字符的数据类型,printf函数用它的内部转换机制骗过了我们。相反,char是管理内存的利器,是理解C语言指针与内存管理的最佳切入点。原创 2021-06-20 00:19:35 · 1219 阅读 · 0 评论 -
为Visual Studio量身订制Freeglut
本文详细介绍了如何为免费的Visual Studio Community 2013编译并配置Freeglut。原创 2015-04-16 15:34:15 · 2442 阅读 · 0 评论 -
Freeglut Windows Programming on NetBeans
本文介绍了如何在Windows下基于Cygwin的NetBeans中配置Freeglut来开发OpenGL应用程序。原创 2015-04-14 00:50:29 · 1784 阅读 · 0 评论 -
在NetBeans配置Libxml2
: 1) 使用Cygwin下载安装Libxml2;2) 配置NetBeans的项目属性:c编译器的包含目录和链接器;3)代码:#include 等原创 2014-10-09 17:06:47 · 1218 阅读 · 0 评论 -
对C++的整数数组进行洗牌
C++的algorithm标准库中有一个random_shuffle()函数,可以随机打乱vector元素的顺序(在扑克游戏中称为洗牌)。但对于数组,却没有这个便利的工具可用。本文要解决的问题是: 1. 给定一个整数数组,如何打乱该数组的顺序? 2. 如何确定算法的效率?1. 算法的实现《Beginning Microsoft Visual C# 2原创 2010-03-21 21:14:00 · 2243 阅读 · 0 评论 -
将NULL传递给C++字符串形参
C++的string的构造函数不允许传入NULL值,这给有时需要传入NULL的字符串实参增加了障碍。本文通过使用C++11的shared_ptr智能指针提供了解决此问题的一种思路。原创 2014-01-01 20:31:36 · 5290 阅读 · 0 评论 -
汇编语言的过程调用的几个问题
汇编语言的过程调用,如果需要传递参数,一般有2种方法,通过寄存器来“传递”,或是通过参数来传递。(还有将所有参数制成参数列表并压栈的传递方法,但较少用。)通过寄存器来“传递”,不是真正意义上的传递,其只不过是事先在几个有限的CPU寄存器中设置相应的值后,再调用过程,过程再直接读取这些寄存器的内容。可想而知,此法犹如C语言中的全局变量,极易感染。而如果通过参数来传递,又不得不面临手工维护堆栈原创 2012-11-09 04:33:18 · 1798 阅读 · 0 评论 -
使用HANDLE_MSG宏简化Win32应用的开发
Win32应用中的回调函数WndProc用于接收Windows向应用程序直接发送的消息,以及响应消息。大多情况下,我们这样编写代码:LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ){ int cxClient, cyClient; PAINT原创 2010-03-31 16:48:00 · 7954 阅读 · 5 评论 -
Win32应用中如何使用MessageBox来显示数值型变量
开发C++应用时,有时需要跟踪某些变量值。使用MessageBox可方便地显示字符型的变量值。但对于数值型变量,如整数型与浮点型,则是一个问题。最初的思路: int a = 3;MessageBox(NULL, TEXT("") + a, TEXT("Test"), MB_OK); Java中,字符串+数值 = 字符串,但在C++中行不通。 Win32中的wsprint原创 2011-06-01 19:26:00 · 10876 阅读 · 0 评论 -
揭秘OpenGL红宝书中棋盘生成程序
OpenGL红宝书中在内存中生成图像时,多次提到了一个生成黑白棋盘的例子。相关代码如下:#define checkImageWidth 64#define checkImageHeight 64GLubyte checkImage[checkImageWidth][checkImageHeight][3];......void makeCheckImage(void){原创 2012-04-23 04:30:56 · 2043 阅读 · 0 评论 -
为GLUT应用编写TGA图像加载程序
GLUT是学习OpenGL编程时一个很好的助手。但它缺乏相应的图像加载功能。这使得我们在学习与研究诸如纹理贴图等内容时,不免显得有些尴尬 —— 要么坚持使用GLUT而不得不忍受在内存中手工生成简单图像的窘境,要么放弃使用GLUT而转向使用Cocoa或MFC等庞大类库。如果选择了后者,看似解决了这个问题,但我们学习研究的方向恐怕会不知不觉地从OpenGL转向Cocoa或MFC了。并且,我们的Open原创 2012-04-27 11:39:53 · 3459 阅读 · 1 评论 -
在Xcode中使用GLUT开发OpenGL应用程序
Xcode是Mac OS X中自带的开发环境。GLUT提供了跨越平台的OpenGL实用工具。本文讲述如何在Xcode 3.2中使用GLUT来开发OpenGL应用程序。在Xcode的启动面板中,选Create a new Xcode project.在弹出的New Project窗口中,在左边选择Application,在右边选择Command Line Tool. 单击Choose...按原创 2010-08-18 01:38:00 · 18598 阅读 · 4 评论 -
C++数组作为函数参数的几个问题
本文需要解决C++中关于数组的2个问题:1. 数组作为函数参数,传值还是传址?2. 函数参数中的数组元素个数能否确定?先看下面的代码。 #include using namespace std;void testArrayArg(int a[]){ cout << endl; cout << "in func..." << endl; cout << "a原创 2011-06-19 12:43:00 · 19581 阅读 · 10 评论 -
C++指针的动态转换
<br />您的一个老客户来找您,需要使用vector来管理众多具有继承关系的类。先有以下三个类。<br /><br /><br /> <br /> class Person {<br /> public:<br /> string name;<br /> Person() : name("Person") {}<br /> };<br /> <br /> class Male : public Perso原创 2011-03-28 04:30:00 · 3169 阅读 · 0 评论 -
MASM32快速起步
这几天读了优快云上人气相当旺的《疯狂的程序员》,有感于汇编语言入门之难,特写此文,以飱众多热心的网友,以邀更多的有心人共同探索充满神秘光环的汇编编程。1.1 安装MASM32到http://www.masm32.com/下载MASM32。指定一个盘符后,其将被安装至该盘的一个名为“masm32”的路径中。下文介绍了如何在MASM32自带的编辑器及原创 2008-03-23 00:28:00 · 11833 阅读 · 3 评论 -
GDI+ for VC6 MFC
五年前,笔者曾在C#中使用GDI+开发程序,对其颇有好感。这一段时间,在使用VC6作图时,深切感会到使用GDI的种种不便,不比GDI+好用。沉迷于VC6的高效与轻便,不想只为了一个GDI+而被迫安装沉甸甸的.Net,便产生了一个疑问,难道GDI+只能用于.Net中吗?访问微软的MSDN网站后,随即解开了此谜。于是便有了此文 – 如何在VC6 MFC中使用GDI+。GDI+可应用于二维向量图原创 2008-02-17 05:45:00 · 6304 阅读 · 4 评论