小编ide*_*suk的帖子

使用制表符作为空格时删除制表符

我知道一般标签与空间的东西和山丘一样古老,主要归结为个人偏好/坚持团队的风格,我只是想问一个关于在Visual Studio中使用空格的实际问题.有一些关于标签的事情让我感到烦恼,我不介意在我们是一个小团队时换到空格.首先编写代码并没有什么不同,但这意味着你必须删除/退格4次我之前按过一次.

是否有任何简单的方法可以轻松删除标签大小的空格(除了用鼠标拖动等)或者如果你已经完成了转换,那么它最终是不会打扰你的?

tabs spaces typing visual-studio

21
推荐指数
2
解决办法
2万
查看次数

Ogre是否使用Exceptions是一种使用它们的好方法?

我已经设法通过我的C++游戏编程职业生涯到目前为止几乎从未接触过异常,但最近我一直在研究一个带有Ogre引擎的项目,我正在努力学习.我在这里找到了很多关于C++异常的一般用法的好问题和答案,但是我想从这里得到一些关于Ogre的使用是否良好以及如何最好地使用它们的外部意见.

首先,引用Ogre关于它自己的Exception类的文档:

OGRE从不使用返回值来指示错误.相反,如果发生错误,则抛出异常,这是封装问题详细信息的对象.使用OGRE的应用程序应该始终确保捕获异常,因此所有OGRE引擎函数都应该在try {} catch(Ogre :: Exception&e){}块中发生.

真?每个Ogre函数都可以抛出异常并包含在try/catch块中?目前,我们在main中使用try/catch来处理它,它将在退出之前显示带有异常描述的消息框.这对于调试来说有点尴尬,虽然你没有得到堆栈跟踪,只是抛出错误的函数 - 更重要的是我们的代码中调用Ogre函数的函数.如果它是Ogre代码中的断言,那么它将直接进入调试器中的代码,我将能够更容易地找出发生的事情 - 我不知道我是否遗漏了一些可以让我调试异常已经?

我现在开始在我们的代码中添加一些try/catch块,通常考虑是否重要,如果Ogre函数抛出异常.如果它会阻止一切正常工作,那么让主try/catch处理它并退出程序.如果它不是很重要,那么在函数调用之后捕获它并让程序继续.最近的一个例子是为应用于实体的材质构建顶点/片段程序参数的向量 - 如果材质没有任何参数,那么它将抛出异常,我抓住然后忽略它,因为它没有'我需要添加到我的参数列表中.这看起来像处理事情的合理方式吗?任何与Ogre合作的具体建议都非常感谢.

c++ visual-studio-2005 exception ogre3d

5
推荐指数
3
解决办法
1549
查看次数

在这个矩阵类中使用 union 是完全安全的吗?

工会不是我经常使用的东西,在这里看了一些其他关于它们的问题之后,似乎几乎总是有某种警告,它们可能不起作用。例如。结构可能具有意外的填充或字节序差异。

在我正在使用的数学库中遇到了这个问题,我想知道它是否是完全安全的用法。我假设多维数组没有任何额外的填充,并且由于两个定义的类型相同,它们保证占用完全相同的内存量?

template<typename T> class Matrix44T
{
    ...

    union
    {
        T M[16];
        T m[4][4];
    } m;
};
Run Code Online (Sandbox Code Playgroud)

这种设置有什么缺点吗?定义的顺序对它的工作方式有什么影响吗?

c++ templates matrix unions

4
推荐指数
1
解决办法
854
查看次数

安装项目安装完成后重新启动的最简单方法是什么?

我讨厌问这个问题,因为我知道已经有很多问题了,有些问题与我想做的非常接近:

第一个似乎表明没有外部软件是不可能的,但是第二个问题给出的答案似乎正是我想要的。但是我真的不明白建议设置时它指的是什么REBOOT=Force

我通读了有关属性的链接文章,但我不知道这是否只是MSDN的编写方式,但我不认为应该在设置项目中使用它们是更明智的选择。我对C#和特别是Setup Project还是很陌生。

在属性之外,使用最少的外部依存关系似乎要做的下一件最简单的事情是创建一个小的C#应用​​程序,该程序除了关闭系统外什么也不做。然后将“自定义操作”添加到“提交”部分以调用此应用程序。在我看来,这似乎是一个矫kill过正,是否意味着无用的应用程序必须作为安装的一部分并留在用户计算机上?

我发现了很多有关使用WIX或Orca的东西,但是我有不使用它们的原因(至少因为我必须为使用的任何软件编写业务案例)。我什至没有尝试创建一个非常复杂的安装程序,只是复制了一些新的EXE,然后重新启动以确保在启动时使用了新的EXE。尽管我现在认为重新启动的麻烦可能不值得,仅将新exe称为自定义操作即可。

c# reboot setup-project

4
推荐指数
1
解决办法
4048
查看次数

MD5哈希值是否可以在大文件上不一致?

我知道MD5哈希不再适用于安全性,但我一直在使用它们作为校验和来确保文件在下载/传输后没有被破坏,我认为这仍然没问题.虽然在大于千兆字节的文件上使用此方法后,我发现存储和生成的哈希值不匹配.这是在我通过USB记忆棒将其从一台计算机传输到另一台计算机之后.我在网上搜索过,发现一些对大文件的引用可能会产生不一致的哈希,但我没有看到任何结论.

我使用ComputeHash(Stream inputStream)MD5CryptoServiceProvider前和转移后产生的哈希值,所以它不应该是不同的语言或某事之间搞砸字节格式的情况.我也尝试再次从文件中构建哈希,第二次它似乎创建匹配哈希很好.我是不是很不走运,实际上在将文件复制到USB记忆棒上之后最终破坏了文件?或者这是MD5的一个已知问题,我应该完全抛弃它?如果是这样,那么最理想的替代品是C#标准配置,SHA1是下一个最佳选择吗?

c# md5

3
推荐指数
1
解决办法
1427
查看次数

如何在编译时找到环境变量?

我不知道这是不是一件好事,但我曾经在某个地方工作过,每个人的计算机上都有像YOUR_NAME这样的环境变量.然后,如果你有一些你自己感兴趣的调试代码,你可以把它包装好,#if defined( YOUR_NAME )甚至不会为其他人编译,除非他们把它改成了#if defined( YOUR_NAME ) || defined( THEIR_NAME ).

我只是尝试自己这样做,它似乎没有工作,重新启动Visual Studio,然后计算机,但它似乎仍然没有被拿起.这个hack还有什么比我理解的更多还是需要在Visual Studio中选择特定的版本/选项?

c++ visual-studio-2005 environment-variables c-preprocessor

2
推荐指数
1
解决办法
5971
查看次数