初探#pragma

今天老师上课提到了宏定义的用途,抛出一个问题:

#pragma的哪个功能最常见?

我凭借印象回答说是once,老师没点我;在黑板上写下#pragma pack(1),引出struct的内存对齐。

不过凭印象里面,的确是#pragma once比较常见呀,还有去掉warning、链接lib什么的。可能和老师精通嵌入式开发有关

于是在这里整理下#pragma的几种常见用途好了

阅读详细 »

[转载]为DrawPrimitiveUP(DrawUserPrimitive)洗冤

在做D3D画线时,处理顶点缓冲发现的问题!所以转一下

最初只因DXSDK文档里说了句推荐用Vertex Buffer而不要用DrawPrimitiveUP(C#里叫DrawUserPrimitive),DrawPrimitiveUP很快被描绘成传说 中的瘟疫,人人都在警告不要接近它。估计有人会想过,既然DrawPrimitiveUP这么不好,为什么还要提供它,难道只是为了显示DX也可以像 OpenGL一样简单地画三角形? 阅读详细 »

关于C语言里清除输入缓冲

这个应该是个经常遇到的问题了,最近参与了C的比赛时又提起

常用的有fflush(stdin),不过这个实际上行为未定义,并且只在win下有效
同样还有rewind(stdin),自己是用都没用过,也不能跨平台。
在这种情况下,有linux爱好者推荐了跨平台setbuf(stdin,NULL),试了下,还是不得其要领
最后发现好用又不用动脑子的就两个:
while((c = getchar()) != '\n' && c != EOF)
scanf(“%*[^\n]%*c”)
看起来比较土但是的确很好用的说
阅读详细 »

让你用vs编译的C++程序在老土的电脑上也能跑~!

不用装framework,其实就是编译的时候把运行库都硬塞到exe里就好了

选择项目"---"属性",打开项目属性页,点击"配置属性"---"c/c++"---"代码生成",将此页面右边的"运行时库"由默认的"多线程DLL(/MD)'改为"多线程(/MT)"

第一次在多媒体课上演示自己的程序时遇到了打不开的情况,才发现自己对vs这个开发环境的了解还是太少了