草庐IT

c# - IDE 条件 block 突出显示

设置:假设我有一个相当大的程序,并且正在使用#defines和各种包含/排除各种代码片段的方法。即假设我有一段这样的代码example_file.c:include#ifdefTHISdosomethingreallycoolhere#ifdefTHATdosomethingevencooler#endif#endif定义文件.c:#defineTHATTRUE#defineTHISFALSE现在我不知道这两个语句是否会被包含或使用,除非我查看定义。上面是一个简单的示例,但假设您有50个ifdef,并且它们以不同的方式嵌套,要追踪这50个值中的每一个值是什么有点麻烦。问题:是否存在一个

c++ - 如何在 C++ 中处理大小为 1,000,000,000 的数组?

我需要处理3D立方体数据。它的元素数量可以达到数十亿。我知道我不能在Windows上分配那么多内存。所以我正在考虑使用进程内数据库进行基于磁盘的操作。有没有更好的方法来做到这一点?也许有什么boost?更新:我最终将不得不提供带有绘图的浏览功能。更新2:下面的文章似乎是使用内存映射文件的一个很好的解决方案。我会尝试并再次更新。http://www.codeproject.com/Articles/26275/Using-memory-mapped-files-to-conserve-physical-mem 最佳答案 第一步也是最基

c++ - C++ 中的虚拟(平面)文件系统

本质上,我需要实现一个程序来充当用户空间文件系统,它实现非常简单的操作,例如查看磁盘上的内容、将文件复制到本地文件系统或从本地文件系统复制文件到我的文件系统(包含在一个名为“disk01”的文件并从我的文件系统中删除文件。我基本上是在寻找一个跳板或一些关于我可以从哪里开始的提示,因为我不确定如何创建我自己的“磁盘”并将其他文件放入其中,这是一项家庭作业。只是一个正在寻找方向的C++学生。编辑:我知道这个概念已经在多个不同的地方使用,例如“VFS”或虚拟文件系统,有点像zip文件(您只能通过可以处理zip文件的程序查看内容)。我基本上是在尝试编写自己的程序,类似于zip或winrar或其

c++ - 在 C++0x 中模拟 finally block

灵感来自theothertopic,我写了这段代码来模拟finallyblock:#include#includestructbase{virtual~base(){}};templatestructexec:base{TLambdalambda;exec(TLambdal):lambda(l){}~exec(){lambda();}};classlambda{base*pbase;public:templatelambda(TLambdal):pbase(newexec(l)){}~lambda(){deletepbase;}};classA{inta;public:voidstar

c++ - 用魔数(Magic Number)初始化一 block 内存的简洁方法

我所指的几个例子:typedefstructSOME_STRUCT{unsignedintx1;unsignedintx2;unsignedintx3;unsignedintx4;//WhatIexpectedwouldwork,butdoesn't;the2ndparametergets//turnedintoan8-bitquantityatsomepointwithinmemsetSOME_STRUCT(){memset(this,0xFEEDFACE,sizeof(*this));}//Somethingthatworked,butseemshokey/hackishSOME_

c++ - 为什么这个案例 block 不执行?

几周前我才开始尝试C++。在尝试C++之前,我对Java有了相当不错的掌握。很多人告诉我,它们在语法意义上非常相似。在底部有一个switch语句来启动战斗场景。每当我选择战斗选项时,它只会关闭程序。这是我的代码:#include"stdafx.h"#include#include//Forrand()#include#include#include//transform()#include//toupper(),tolower()#include//ptr_fun()#include//PUTS***BELOWTHISPOINT//___________________________

c++ - 关于 RAII,C++ `try`/`catch` block 是否与其他 block 相同?

好吧,如果我使用RAII习惯用法来管理某些上下文属性*,如果我在tryblock的开头直接使用它,它会像我预期的那样工作吗?换句话说,如果我有这个:structraii{raii(){std::cout……我成功地使用了它:{raiido_the_raii_thing;stuff_expecting_raii_context();/*…*/}...如果我这样做,RAII实例会以同样的方式工作吗:try{raiido_the_raii_thing;stuff_expecting_raii_context_that_might_throw();/*…*/}catch(std::except

c++ - 变量的 block 结构内存分配

for(inti=0;i在这里,我想知道变量x的内存是否会被分配两次,或者该值是否在退出第二个block后才重置并且内存只分配一次(对于x)? 最佳答案 从C编程模型的角度来看,x的两个定义是两个完全不同的对象。内部block中的赋值不会影响外部block中x的值。此外,循环的每次迭代的定义也算作不同的对象。在一次迭代中为任一x赋值不会影响后续迭代中的x。就实际实现而言,假设未进行优化,有两种常见情况。如果您打开了优化,您的代码可能会被丢弃,因为编译器很容易发现循环对它之外的任何东西都没有影响,除了i。两种常见的场景是变量存储在栈中

c++ - 2D 平台碰撞处理

我正在尝试创建一个2D平台游戏(马里奥类型)游戏,我在正确处理碰撞方面遇到了一些问题。我正在用C++编写这个游戏,使用SDL进行输入、图像加载、字体加载等。我还通过FreeGLUT库结合SDL使用OpenGL来显示图形。我的碰撞检测方法是AABB(轴对齐边界框),这确实是我需要的全部开始。我需要的是一种既能检测碰撞发生在哪一侧又能正确处理碰撞的简单方法。所以,基本上,如果玩家与平台顶部发生碰撞,请将他重新定位到顶部;如果侧面发生碰撞,请将玩家重新定位到物体的侧面;如果底部发生碰撞,请将播放器重新定位在平台下方。我已经尝试了许多不同的方法来做到这一点,例如尝试找到穿透深度并根据穿透深度向

c++ - std::tr1::shared_ptr 是否会抛出 bad_alloc 并且在 try/catch block 中是个好主意?

我实际上正在制作一个简单的C++SFML游戏,我想学习更多关于C++编程的知识。现在我正在使用shared_ptr来管理资源。创建新资源时,我对shared_ptrs有一些疑问,例如:shared_ptrresource(newResource(World::LEVEL));根据boostshared_ptr(Y*p)throwsbad_alloc。我不知道std::tr1是否也这样做。而且我不知道我是否应该担心将shared_ptr放入try/catchblock中以检查是否抛出bad_alloc。这是一个好的编程习惯吗? 最佳答案