小编Sin*_*rMJ的帖子

如果(假==条件).为什么?

我收到了之前工作过的人的代码,它包含很多行

while(false==find && false == err && k<kmax)
if(true==refract(ep1,ep2,n1,RI_blood, RI_collagen))
Run Code Online (Sandbox Code Playgroud)

我最喜欢的是

if(false == (ret_s<0))
Run Code Online (Sandbox Code Playgroud)

其他代码做得非常好,记录得很好,但是这些奇怪条件的这些线条让我失望了,我想知道为什么他们这样做了.

特别是那false==(ret_s<0)是完全令人困惑的,你需要读三次这样的线来理解他们想要的东西.

这是一种常见的编程风格,难道我不理解其中的推理,还是仅仅是糟糕的风格?

编辑:我觉得这与if(object == NULL)vs if(NULL == object)类似,因为这不是关于意外分配而是关于asfuscated if子句......

c++

26
推荐指数
4
解决办法
4484
查看次数

Top level exception not catching anything

My entry point should catch any exception not being handled at a lower level:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;

namespace EyeScanner
{
    static class Program
    {
        [FlagsAttribute]
        public enum EXECUTION_STATE : uint
        {
            ES_AWAYMODE_REQUIRED = 0x00000040,
            ES_CONTINUOUS = 0x80000000,
            ES_DISPLAY_REQUIRED = 0x00000002,
            ES_SYSTEM_REQUIRED = 0x00000001
            // Legacy flag, should not be used.
            // ES_USER_PRESENT = 0x00000004
        }

        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
        /// <summary>
        /// The …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling

10
推荐指数
1
解决办法
3190
查看次数

拆卸C#

我有一个关于C#的问题.

我目前正在研究医疗软件产品,其中一个重要的事情是确保患者的数据是加密的.我有两个问题:

1.)System.Security.Cryptography中的.NET(Rijndael)的Microsoft .NET实现有多安全?它是否有任何已知的安全漏洞,或者我只是使用MS实现?(注意,我知道这些算法如何工作的基本背景,但我并不是那么深入了解它是如何工作的).

2.)由于数据与应用程序存储在同一台PC上,从C#应用程序获取信息有多难?假设我在代码中的某个地方

string encrypPassword = "ThisIsMyPassword";
string encryptedString = EncryptString(ClearString, encrypPassword);
// save encryptedString to harddrive
Run Code Online (Sandbox Code Playgroud)

我知道攻击者可以直接进入汇编代码,此时我无法对此做任何事情(系统必须能够加密/解密数据),但有一个快捷方式C#获取encrypPassword,因为它是托管的,或者做这样的事情还需要你去编译汇编代码?

c# security

7
推荐指数
1
解决办法
831
查看次数

_ftol2_sse,有更快的选择吗?

我有很多代码

int myNumber = (int)(floatNumber);
Run Code Online (Sandbox Code Playgroud)

总共约占我CPU时间的10%(根据分析器).虽然我可以把它留在那里,但我想知道是否有更快的选择,所以我试着四处寻找,偶然发现

http://devmaster.net/forums/topic/7804-fast-int-float-conversion-routines/ http://stereopsis.com/FPU.html

我尝试实现那里给出的Real2Int()函数,但它给我错误的结果,并且运行速度较慢.现在我想知道,是否有更快的实现将double/float值置于整数,或SSE2版本的速度是否达到最快?我找到的页面可以追溯到一点,所以它可能只是过时了,更新的STL更快.

目前的实施方式:

013B1030  call        _ftol2_sse (13B19A0h)

013B19A0  cmp         dword ptr [___sse2_available (13B3378h)],0  
013B19A7  je          _ftol2 (13B19D6h)  
013B19A9  push        ebp  
013B19AA  mov         ebp,esp  
013B19AC  sub         esp,8  
013B19AF  and         esp,0FFFFFFF8h  
013B19B2  fstp        qword ptr [esp]  
013B19B5  cvttsd2si   eax,mmword ptr [esp]  
013B19BA  leave  
013B19BB  ret  
Run Code Online (Sandbox Code Playgroud)

相关问题我发现:

ARM(iPhone 3GS/4)上的快速浮点到int转换和浮点精度

在x86上将float转换为int的最快方法是什么

由于两者都是旧的,或者基于ARM,我想知道目前是否有这样的方法.请注意,它说最好的转换是不会发生的转换,但我需要它,所以这是不可能的.

c++ floating-point

5
推荐指数
1
解决办法
2642
查看次数

仅在发布版本中发生致命错误C1047

我的项目使用Visual Studio 2012,我使用的是libfftw-3.3.lib来自他们的页面.当我在调试中构建我的项目时,它链接和编译就好了,我得到了一个有效的应用程序.当我将其设置为释放模式时,链接器会给我以下错误:

2>LINK : fatal error C1047: The object or library file '../IncludeLibs/libfftw-3.3-x86.lib' was created with an older compiler than other objects; rebuild old objects and libraries
2>LINK : fatal error LNK1257: code generation failed
Run Code Online (Sandbox Code Playgroud)

当我设置我的项目以输出.lib时,即使在发布模式下,它也可以,但不是.dll或.exe

有什么想法,或者我能做些什么来解决这个问题?

编辑:我的链接器设置,调试:

/OUT:"G:\GlukoseScanner\GlucoseScanner\Debug\MachineLearning.exe" /MANIFEST /NXCOMPAT /PDB:"G:\GlukoseScanner\GlucoseScanner\Debug\MachineLearning.pdb" /DYNAMICBASE "../debug/GlucoseDLL.lib" "shlwapi.lib" "../PicoScope/ps5000a.lib" "../C/cbw32.lib" "../DSO2250_SDK/Lib/SDK2250DLL.lib" "../IncludeLibs/libfftw-3.3-x86.lib" "../IncludeLibs/libfftwf-3.3-x86.lib" "mlpack.lib" "winmm.lib" "opengl32.lib" "glu32.lib" "..\..\armadillo-4.400.1\build\Release\armadillo.lib" "..\..\armadillo-4.400.1\examples\lib_win32\libblas.lib" "..\..\armadillo-4.400.1\examples\lib_win32\liblapack.lib" "..\libxml2\libxml2-2.7.8.win32\lib\libxml2.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /INCREMENTAL /PGD:"G:\GlukoseScanner\GlucoseScanner\Debug\MachineLearning.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\MachineLearning.exe.intermediate.manifest" /ERRORREPORT:PROMPT …
Run Code Online (Sandbox Code Playgroud)

c++ linker fftw visual-studio-2012

5
推荐指数
1
解决办法
7328
查看次数

gflags对话框无法打开

我目前正在尝试调试我的一个应用程序中的内存泄漏(是的,那个废话再次......),并试图设置gflags设置,但对话框将无法打开.我安装了Windows 10 SDK(我在Windows 7 x64上),但它说它在Win7上也适用于描述,那为什么我根本不能使用它?

如果我gflags从命令行开始,什么都没发生,没有错误,没有反馈,没有.

有人知道我的系统可能会发生什么吗?

windows gflags

5
推荐指数
1
解决办法
1095
查看次数

managed_shared_memory vs windows_shared_memory

我目前正在查看Boost的进程间库的文档,并试图弄清楚它们之间的区别.

从我可以说,唯一的区别是持久性(当最后一个进程退出时释放Windows共享内存,只有在被告知时才释放managed_shm),是否存在其他差异,如速度或我错过了?

c++ boost-interprocess

5
推荐指数
1
解决办法
327
查看次数

Debug和Release之间的结果不同

我有一个问题,我的代码在将调试与发布进行比较时会返回不同的结果.我检查了两种模式都使用/ fp:exact,所以这不应该是问题.我对此的主要问题是完整的图像分析(它是一个图像理解项目)完全是确定性的,其中绝对没有任何随机性.

另一个问题是我的发布版本实际上总是返回相同的结果(图像为23.014),而debug返回22到23之间的一些随机值,这不应该是.我已经检查过它是否与线程相关,但算法中唯一的多线程部分会为调试和发布返回完全相同的结果.

还有什么可能发生在这里?

Update1:我现在发现的代码负责此行为:

float PatternMatcher::GetSADFloatRel(float* sample, float* compared, int sampleX, int compX, int offX)
{
    if (sampleX != compX)
    {
        return 50000.0f;
    }
    float result = 0;

    float* pTemp1 = sample;
    float* pTemp2 = compared + offX;

    float w1 = 0.0f;
    float w2 = 0.0f;
    float w3 = 0.0f;

    for(int j = 0; j < sampleX; j ++)
    {
        w1 += pTemp1[j] * pTemp1[j];
        w2 += pTemp1[j] * pTemp2[j];
        w3 += pTemp2[j] * pTemp2[j];
    } …
Run Code Online (Sandbox Code Playgroud)

c++ openmp visual-studio-2010 release-mode debug-mode

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

使用const变量检测到无法访问的代码

我有以下代码:

private const FlyCapture2Managed.PixelFormat f7PF = FlyCapture2Managed.PixelFormat.PixelFormatMono16;

public PGRCamera(ExamForm input, bool red, int flags, int drawWidth, int drawHeight) {
   if (f7PF == FlyCapture2Managed.PixelFormat.PixelFormatMono8) {
      bpp = 8;  // unreachable warning
   }
   else if (f7PF == FlyCapture2Managed.PixelFormat.PixelFormatMono16){
      bpp = 16;
   }
   else {
      MessageBox.Show("Camera misconfigured");  // unreachable warning
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道这段代码是无法访问的,但是我不希望这条消息出现,因为它是编译时的配置,只需要更改常量来测试不同的设置,每像素位数(bpp)会根据像素格式.是否有一个很好的方法让一个变量保持不变,从中导出另一个变量,但不会导致无法访问的代码警告?请注意,我需要两个值,在相机启动时需要将其配置为正确的像素格式,并且我的图像理解代码需要知道图像的位数.

那么,有一个很好的解决方法,还是我只是忍受这个警告?

c# unreachable-code

4
推荐指数
3
解决办法
1156
查看次数

if()跳过我的变量检查

我有以下代码:

std::vector<std::string> GetSameID(std::vector<string>& allFiles, int id) {
    std::vector<std::string> returnVector;
    for(std::vector<string>::iterator it = allFiles.begin(); it != allFiles.end(); ++it) {
        if(GetID(*it) == id) {
            int index = (*it).find("_CH2.raw");
            if(index > 0) {
                continue; //this works
            }
            if(0 < ((*it).find("_CH2.raw")))  {
                continue; //this doesn't
            }

            string ext =  PathFindExtension((*it).c_str());
            if(ext == ".raw") {
                returnVector.push_back(*it);
            }
        }
    }
    return returnVector;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么if(0 < ((*it).find("_CH2.raw")))不这样做?我的文件名为ID_0_X_0_Y_128_CH1.raw ID_0_X_0_Y_128_CH2.raw(示波器上的通道1和通道2的ID,X和Y不同).

如果我做了很长的路(分配索引,然后检查索引),它的工作原理,我不明白为什么短版本,更易读的imo,不起作用.

c++

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