小编ein*_*ica的帖子

Boost.Program_Options:当<bool>被指定为命令行选项时,什么是有效的命令行参数?

鉴于以下简单使用Boost.Program_Options:

boost::program_options::options_description options("Options");

options.add_options()

    ("my_bool_flag,b", boost::program_options::value<bool>(), "Sample boolean switch)")

    ;
Run Code Online (Sandbox Code Playgroud)

...什么命令行参数将评估false,以及什么true

(即,假设程序名为"foo",并在命令行上执行: foo -b ? ...带有问号的占位符,用于其他一些文本:所有可能正确评估的文本选项是false什么,以及什么true? )

c++ boost boolean command-line-arguments boost-program-options

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

在每次调用函数后,如何避免/减轻返回值检查的痛苦?

在不支持异常的语言和/或库中,许多/几乎所有函数都返回一个值,表示其操作成功或失败 - 最着名的例子可能是UN*X系统调用,例如open()or chdir()或某些libc函数.

无论如何,当我编写C代码时,它通常看起来像这样:

int retval;
...
retval = my_function(arg1, arg2);
if (retval != SUCCESS_VALUE) { do_something(); }

retval = my_other_function(arg1, arg2);
if (retval != SUCCESS_VALUE) { do_something_else(); }
Run Code Online (Sandbox Code Playgroud)

现在,我想要的是不要将retval保存在任何地方并且在异常中抛出错误,但我不能拥有它.什么是下一个最好的东西?我知道这个问题没有真正的解决办法,但我还是想做点什么.

一些想法:

  • 试着和我们一起生活assert()(但那不是生产代码,不能只是死).
  • 使用宏或返回值检查功能调用函数调用,例如ensure_success(my_function(args)ensure_success(my_other_function(args),my_error_handler,error_handler_args).

我可能更喜欢这个问题吗?

编辑:

  • 是的,我正在编写C代码.我尊重你的观点,我应该尽量避免在C中写作,但那真的不具有建设性.这不是一个语言战争的问题,请不要成为一个问题.
  • 我不是在问什么是最好的事情,我只想要更多的可能性.(我会选择一个我喜欢的,其他人可能会选择别的东西.)

c error-handling conventions return-value

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

我什么时候应该使用-inl.h文件?

我刚刚在Google C++编码风格指南中注意到了这个项目 - 我并不太明白.

如果我将内联方法或函数放在除其他文件包含的标题之外的文件中,它将不是该类的方法; 它只能用于包含它的代码.那么为什么甚至会有这样的-inl.h文件呢?

另外,为什么我们甚至想要内联长函数呢?(即,除了模板的情况,我们必须将代码放在头文件中进行实例化)

c++ inline header header-files

9
推荐指数
3
解决办法
4174
查看次数

加载了不兼容的JavaHl库

我遇到了Subclipse和JavaHL库的问题.Subclipse它给出了错误:

加载了不兼容的JavaHL库.需要1.8.x或更高版本.

我使用Ubuntu桌面12.04 32位.

eclipse subclipse svn ubuntu

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

在 bash 中,如何强制刷新打印到终端的不完整行

我正在编写一个脚本,它执行如下操作:

echo -n "Doing stuff, wait for it... "
do_stuff
(($?==0)) && echo SUCCESS || echo FAILURE
Run Code Online (Sandbox Code Playgroud)

请原谅糟糕的 bash 技能。无论如何,问题是该行的第一部分在do_stuff完成之前不会被打印 - 虽然对我来说用户知道我接下来要运行什么很重要。对我来说也很重要,因为我很迂腐,不打印换行符。因此,文本位于缓冲区中并且不会被刷新。

这个问题非常相似,但是OP对事情基本上是满意的。我不是。如果到了紧要关头,我什至愿意使用与诅咒相关的东西(但请记住,这毕竟是一个 shell 脚本)。

bash terminal newline flush fflush

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

当我们有 contexpr 值时 &lt;ratio&gt; 有什么用?

<ratio>头允许您使用模板元编程来处理和操作有理值。

然而,它是在 C++11 中引入的,当时我们已经有了constexpr. 为什么有一个完全构造的有理数库类型还不够好,即基本上:

template<typename I>
struct rational { 
    I numerator;
    I denominator;
};
Run Code Online (Sandbox Code Playgroud)

并用它代替?

使用std::ratioC++11 constexpr 功能是否有一些不太适合的具体好处?如果是这样,它在 C++20 中是否仍然相关(随着 constexpr 的扩展“范围”)?

c++ c++11 c++20

9
推荐指数
2
解决办法
1575
查看次数

模板专业化枚举成员的前向声明 - GCC 失败

我知道,一般来说,我们可以在 C++11 中前向声明枚举。

那么,为什么会这样:

enum kind_t { kind1, kind2 };

template <kind_t Kind> struct foo {};

template <> struct foo<kind1> {
    enum named : int;
};

enum foo<kind1>::named : int {
    named1 = 123,
    named2 = 456,
};
Run Code Online (Sandbox Code Playgroud)

使用 GCC (12.1) 编译失败?错误(上帝螺栓):

<source>:9:6: error: cannot add an enumerator list to a template instantiation
    9 | enum foo<kind1>::named : int {
      |      ^~~~~~~~~~
ASM generation compiler returned: 1
<source>:9:6: error: cannot add an enumerator list to a …
Run Code Online (Sandbox Code Playgroud)

c++ enums gcc forward-declaration c++11

9
推荐指数
0
解决办法
121
查看次数

避免额外的ExternalProject下载

假设我有以下项目设置与这些依赖项:

MainProject
?? Dependency_1
?  ?? Dependency_2
?? Dependency_2
Run Code Online (Sandbox Code Playgroud)

这些依赖关系的处理MainProjectDependency_1ExternalProject.

问题Dependency_2将被下载两次:Dependency_1将为自己MainProject下载一个副本,并将为自己下载一个副本.

这不是一个有效的构建过程,有没有一种方法可以Dependency_2为两个项目下载一次?


有人建议这个问题与此问题重复.这个问题与我的略有不同,因为我不能假设这些库将通过ExternalProject安装到主机系统.我还想要一个只有CMake的解决方案,而这个问题并不需要.

installation dependencies build cmake external-project

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

使用(自定义)GCC 4.x或5.x时,Boost构建无法进行C++ 11功能检查

我需要在Fedora 24机器上构建Boost 1.62和1.63,但是使用GCC 4.9.3或GCC 5.4.0(取决于版本CUDA,这就是我需要旧编译器的原因).但是,如果我按照本答案中的描述设置自定义GCC版本并运行

/b2 --toolset=gcc-5.4.0 stage
Run Code Online (Sandbox Code Playgroud)

令我懊恼的是,我现在看到:

    - 32-bit                   : no
    - 64-bit                   : yes
    - arm                      : no
    - mips1                    : no
    - power                    : no
    - sparc                    : no
    - x86                      : yes
    - symlinks supported       : yes
    - C++11 mutex              : no
    - lockfree boost::atomic_flag : yes
    - Boost.Config Feature Check: cxx11_auto_declarations : no
    - Boost.Config Feature Check: cxx11_constexpr : no
    - Boost.Config Feature Check: cxx11_defaulted_functions : no
    - Boost.Config Feature Check: cxx11_final …
Run Code Online (Sandbox Code Playgroud)

c++ gcc boost c++11 b2

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

AVX-512 伽罗瓦域相关指令的用途是什么?

AVX-512 指令集扩展之一是AVX-512 + GFNI,“伽罗华域新指令”。

伽罗瓦理论是关于域扩展的。这与处理矢量化整数或浮点值有什么关系?指令应该执行“Galois 域仿射变换”,它的逆,以及“Galois 域乘以字节”。

那些是什么领域?这些说明实际上做了什么,它有什么用?

galois-field avx512

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