小编Bea*_*ear的帖子

启用优化后会产生不同的浮点结果 - 编译器错误?

以下代码适用于Visual Studio 2008,有无优化.但它只适用于没有优化的G ++(O0).

#include <cstdlib>
#include <iostream>
#include <cmath>

double round(double v, double digit)
{
    double pow = std::pow(10.0, digit);
    double t = v * pow;
    //std::cout << "t:" << t << std::endl;
    double r = std::floor(t + 0.5);
    //std::cout << "r:" << r << std::endl;
    return r / pow;
}

int main(int argc, char *argv[])
{
    std::cout << round(4.45, 1) << std::endl;
    std::cout << round(4.55, 1) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出应该是:

4.5
4.6
Run Code Online (Sandbox Code Playgroud)

但是带有优化(O1- O3)的g ++ …

c++ optimization g++ c++-faq

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

如何使用qmake与两个具有相同名称的源文件?

我的Qt项目有两个相同名称但在不同文件夹中的源文件.专业文件是:

SOURCES = A/Test.cpp 
SOURCES += B/Test.cpp
Run Code Online (Sandbox Code Playgroud)

它可以产生通过Qt的Visual Studio的插件Visual Studio解决方案文件,但它不会工作,因为生成的目标文件具有相同的名称:Test.obj.这将导致LNK2001未解析的外部符号,因为其中一个Test.obj被覆盖.

如何编写适当的专业文件来处理?

qt qmake visual-c++

16
推荐指数
2
解决办法
4028
查看次数

-e 在环境变量中消失,如何避免这种情况?

#!/bin/bash

OPTS='-e EXTERNAL_PORT=443'

echo $OPTS

cat 1.txt
if [ $? -ne 0 ]; then
    echo $OPTS
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到输出:

EXTERNAL_PORT=443
cat: 1.txt: No such file or directory
EXTERNAL_PORT=443
Run Code Online (Sandbox Code Playgroud)

如果我将 OPTS 更改为

OPTS='a -e EXTERNAL_PORT=443'
Run Code Online (Sandbox Code Playgroud)

现在一切正常了

a -e EXTERNAL_PORT=443
cat: 1.txt: No such file or directory
a -e EXTERNAL_PORT=443
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这种情况?这是一个简化的演示,在我的真实案例中,我有一个以 -e 开头的环境变量 OPTS 。

我回显它,它是正确的,但是在 line 之后if [ $? -ne 0 ]; then,“-e”消失了,这会导致我的脚本出现错误。

谢谢。

bash environment-variables

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

标签 统计

bash ×1

c++ ×1

c++-faq ×1

environment-variables ×1

g++ ×1

optimization ×1

qmake ×1

qt ×1

visual-c++ ×1