小编Man*_*uel的帖子

运行V8 Javascript Engine Standalone

我想在V8之上运行Javascript控制台.我该怎么做呢?

javascript v8

124
推荐指数
6
解决办法
8万
查看次数

Visual C++上NOMINMAX可能出现的问题

NOMINMAX在我的程序中定义其他任何内容时,我可以遇到什么问题?

据我所知,这将使<Windows.h>没有定义minmax宏,从而与STL许多矛盾,例如std::min(),std::max()std::numeric_limits<T>::min()得到解决.

我是否正确地假设只有Windows特定和遗留代码会出现问题?几乎所有的库都不应该依赖min()max()定义为宏?

编辑:其他Windows标题是否会出现问题?

c++ windows visual-c++

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

循环在CMake中匹配通配符的文件

我想用CMake来运行一些测试.其中一个测试应该在匹配"fixtures/*.ext"的所有文件上调用验证器脚本.如何将以下伪CMake转换为真正的CMake?

i=0
for file in fixtures/*.ext; do
  ADD_TEST(validate_${i}, "validator", $file)
  let "i=i+1"
done
Run Code Online (Sandbox Code Playgroud)

cmake

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

便携式打印指数的双C++ iostreams

我想打印一个double值来std::cout移植(GCC,clang,MSVC++),这样所有平台上的输出都是一样的.

我对指数的格式有问题.以下程序

#include <iostream>
int main()
{
    std::cout << 0.1e-7 << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个输出与GCC一起:

1e-08
Run Code Online (Sandbox Code Playgroud)

以及MSVC的以下输出

1e-008
Run Code Online (Sandbox Code Playgroud)

如何使两个输出相同?

如果这是一个愚蠢的问题,我很抱歉,但到目前为止我还没有找到答案.所有格式似乎围绕尾数之前的所有格式化...

编辑:GCC的输出是1e-08不是1e-8(原先规定),所以它符合.对困惑感到抱歉.

EDIT2:在Dietmar的评论之后,实际上将"尾数"重命名为"指数".维基百科上还有一节关于尾数与重要的部分.

c++ double formatting iostream platform-independent

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

如何从std :: runtime_error继承?

例如:

#include <stdexcept>
class A { };
class err : public A, public std::runtime_error("") { };
int main() {
   err x;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

随着("")runtime_error我得到:

error: expected '{' before '(' token
error: expected unqualified-id before string constant
error: expected ')' before string constant
Run Code Online (Sandbox Code Playgroud)

否则(没有(""))我得到

In constructor 'err::err()':
error: no matching function for call to 'std::runtime_error::runtime_error()'
Run Code Online (Sandbox Code Playgroud)

出了什么问题?

(你可以在这里测试一下:http://www.compileonline.com/compile_cpp_online.php)

c++ inheritance runtime-error

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

如何检测堆栈溢出点

我的C程序有以下问题:某处是堆栈溢出.尽管编译没有优化和调试符号,程序退出此输出(在Linux上的gdb内部或外部):

程序因信号SIGSEGV,分段故障而终止.该计划已不复存在.

我能够检测到这实际上是堆栈溢出的唯一方法是通过valgrind运行程序.有什么方法可以以某种方式强制操作系统转储调用堆栈跟踪,这将帮助我找到问题?

可悲的是,gdb也不允许我轻松地使用该程序.

c linux stack-overflow callstack gdb

10
推荐指数
2
解决办法
7531
查看次数

在C++代码中查找非实例化的模板

在C++代码中查找未实例化模板的最佳方法是什么?

我有一个大量使用模板的代码库.当然,我们希望确保测试覆盖率很高.对于所有使用的代码,这非常有效gcov.

但是,未使用的模板将报告为不可执行的gcov.

经过一些谷歌搜索,似乎没有办法强制g++发出这些模板的代码(这只是逻辑,编译器应该如何猜测任何类型?)似乎也没有办法让gcov识别未实例化的模板代码作为可运行的代码.

有没有"开箱即用"的东西可以让我增加GCC -ftest-coverage -fprofile-arcs仪器生成的文件?通过GCCgcov选项文档,将整个模板函数体标记为一个块可能就足够了,因为执行永远不会在那里结束.

编辑(背景信息):我正在开发一个仅限标题的模板库.我的目标是找到未使用/未经测试的功能.

我知道代码覆盖是有缺陷的,但找到未经实例化的代码是迈向更好测试代码的非常重要的一步.目前,我们将检查点宏放在每个函数的开头.在测试模式中,它们扩展为将一对(file, line)插入全局传递检查点的代码.运行测试后,我们手动读取所有文件,并将到达的检查点与所有可用检查点的集合进行比较.

查找未实例化的代码很重要,例如,由于不直观的C++模板优先级行为,可能存在读者甚至作者期望使用的死代码.

c++ templates code-coverage gcov

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

是否存在"多用户"Docker模式,例如科学集群?

我想使用Docker来隔离用于HPC Unix集群的科学应用程序.科学软件通常具有外来依赖性,因此将它们与Docker隔离似乎是一个好主意.这些计划将作为工作而不是作为服务运行.

我希望有多个用户使用Docker,用户应该相互隔离.这可能吗?

我执行了本地Docker安装,并且在docker组中有两个用户.docker images对两个用户显示相同结果的调用.

此外,作业应在调用用户的UID下运行,而不是以root身份运行.

这样的设置是否可行?以前做过吗?这记录在哪里?

docker singularity-container

8
推荐指数
2
解决办法
6689
查看次数

使用库存Linux工具的最小"任务队列"来利用多核CPU

使用bash和常用工具为Linux构建最小任务队列系统的最佳/最简单方法是什么?

我有一个9'000行的文件,每行有一个bash命令行,命令是完全独立的.

command 1 > Logs/1.log
command 2 > Logs/2.log
command 3 > Logs/3.log
...
Run Code Online (Sandbox Code Playgroud)

我的盒子有多个核心,我想同时执行X任务.我在网上搜索了一个很好的方法来做到这一点.显然,很多人都有这个问题,但到目前为止还没有人有一个好的解决方案.

如果解决方案具有以下功能,那将是很好的:

  • 可以解释多个命令(例如command; command)
  • 可以解释行上的流重定向(例如ls > /tmp/ls.txt)
  • 仅使用常见的Linux工具

如果它适用于其他Unix克隆而没有太多异国情调的要求,则可获得奖励积分.

queue parallel-processing bash

7
推荐指数
2
解决办法
3293
查看次数

C++类成员的生命周期

C++类成员的生命周期是多少.例如,std::fstream某个Foo对象何时会被释放?进入析构函数或离开析构函数时?这是在C++标准中定义的吗?

struct Foo
{
    std::fstream mystream;
    ~Foo()
    {
        // wait for thread writing to mystream
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ raii

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