小编Pie*_*tro的帖子

提升 named_semaphore 示例?

我还没有找到一个很好的例子来展示如何使用 boost::interprocess:: named_semaphore(甚至在 Boost 网站上都没有)。

我可以看到有关 interprocess_semaphore 的一些信息,但它们似乎完全不同,我不知道为一个显示的内容是否也适用于另一个。

任何人都可以给我一些此类示例/教程/文档的链接吗?

谢谢你。

c++ boost semaphore interprocess

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

用于标识UNIX派生系统的通用宏?(Linux,OSX,BSD,......)

我想知道为什么在MacOSX __unix__上没有定义宏.

MacOSX不是BSD UNIX衍生产品吗?

如果我__unix__在代码中定义宏,我可以遇到一些问题吗?

一般来说,在检查当前平台时,我更喜欢做以下事情:

#ifdef __unix__
...
#endif
Run Code Online (Sandbox Code Playgroud)

代替:

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ...
...
#endif
Run Code Online (Sandbox Code Playgroud)

最好的选择是在一个地方定义我自己的宏吗?例如:

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ...
#define UNIX_
#endif
Run Code Online (Sandbox Code Playgroud)

c unix macos macros c-preprocessor

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

QtCreator:如何设置调试参数?

在QtCreator中,我无法找到在调试模式下运行时如何设置传递给可执行文件的参数.

debugging parameters qt arguments qt-creator

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

Windows中的不朽过程; 无法杀死它

我正在Windows 7/MinGW中编写一个普通的,无辜的C++/Qt程序.

这是两天内第二次关闭程序后,可执行文件仍在活动进程中,并且无法杀死它(我从命令行和Windows任务管理器中尝试).

一个不便之处是我无法重新链接我的代码,因为二进制代码无法被覆盖,正在运行.

windows qt kill process windows-7

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

如何从cmake中的列表中删除令牌?

我想在不在Windows中时从构建中排除一些源文件.
以下CMakeLists.txt cmake文件有什么问题?

aux_source_directory(. SRC_LIST)

# Remove Microsoft specific files
message(${SRC_LIST})

list(REMOVE_ITEM SRC_LIST stdafx.h stdafx.cpp)

message("------------------")
message(${SRC_LIST})
Run Code Online (Sandbox Code Playgroud)

尝试删除这两个文件之前和之后的消息内容完全相同.

怎么了?

makefile build cmake

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

捕获测试框架问题:无法使用Catch :: Session()

我在编写一些测试的C ++文件中收到此错误:

error: no member named 'Session' in namespace 'Catch'
        testResult = Catch::Session().run(test_argc, test_argv);
                     ~~~~~~~^
Run Code Online (Sandbox Code Playgroud)

查看catch.hpp单个头文件时,我注意到应该实现Session()成员函数的代码显示为灰色,可能是因为某个地方没有#ifdef。

是否可以设置任何宏以使用Session类?

捕获版本:1.5.3和1.5.6。

参考:https : //github.com/philsquared/Catch/blob/master/docs/own-main.md

c++ testing session frameworks catch-unit-test

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

如何获取 Doxygen 文档中的纯文本文件?

我无法在 Doxygen 文档中包含任何文本文件。唯一的例外是README.md我设置为主页的文件。

特别是,我想Changelog.txt在文档中查看该文件。我试图在INPUT字段和字段中显式添加它FILE_PATTERNS,但没有成功。在生成的 HTML 文档中,我无法在文件列表中找到任何内容,也无法进行搜索。

唯一的跟踪位于 Doxygen 的日志文件中:

Preprocessing C:/Source/Changelog.txt...
Parsing file C:/Source/Changelog.txt...
...
Parsing code for file Changelog.txt...
Run Code Online (Sandbox Code Playgroud)

如果我将文件的扩展名从 更改为txtmd该文件将添加到文档中。

text doxygen text-files doxywizard

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

无法在 Meson 构建中使用 C++ `std::filesystem` 库

我正在尝试使用 Meson 构建系统构建一段使用新的 C++17 文件系统库的 C++ 代码。

这是meson.build涉及的文件:

if not compiler.has_header('filesystem')   # This is OK
    warning('The compiler has no <filesystem> header file')
endif

filesystem_dep = dependency('libc++fs', modules : ['filesystem'])

test_exe = executable('test', test_src,
                      include_directories : include_dirs,
                      dependencies : filesystem_dep
                     )
Run Code Online (Sandbox Code Playgroud)

如果使用 boost::filesystem 库,这应该是正确的语法:

filesystem_dep = dependency('boost', modules : ['filesystem'])
Run Code Online (Sandbox Code Playgroud)

如何指定我想要标准 C++ 库中包含的版本?这是我尝试过但没有成功的方法:'libc++fs'、'stdlib'、'stdc++'、'libc++'、'c++'、'c++17'。

这是我从 Meson 收到的错误消息:

src/meson.build:33:0: 错误: 未找到本机依赖项“libc++fs”

我目前使用的编译器是LLVM/clang。

c++ clang boost-filesystem meson-build

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

Meson 选择了错误的编译器(GCC 而不是 clang)

我正在尝试将我的项目配置为使用 LLVM/clang++ 构建,但始终选择 GCC:

$ /opt/llvm/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-18.04/bin/clang++ --version
clang version 7.0.1 (tags/RELEASE_701/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/llvm/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-18.04/bin
$ 
$ CC=/opt/llvm/clang+llvm-7.0.1-x86_64-linux-gnu-ubuntu-18.04/bin/clang++ meson ~/build
The Meson build system
Version: 0.49.1
Source dir: ~/source
Build dir: ~/build
Build type: native build
Project name: test
Project version: 0.1.0
Native C++ compiler: ccache c++ (gcc 6.3.0 "c++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516")
Build machine cpu family: x86_64
Build machine cpu: x86_64
Message: Compiler: GCC
Dependency threads found: YES 
Build targets in project: 2
Found ninja-1.8.2 …
Run Code Online (Sandbox Code Playgroud)

c++ gcc clang clang++ meson-build

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

如何比较两个同名的预处理器宏?

我有一个项目,其中有两个不同的同名预处理器宏,在两个不同的包含文件(来自两个不同的库)中定义,我必须在构建时检查它们是否具有相同的值。

到目前为止,我可以在运行时进行此检查,将宏值分配给不同实现文件中的不同变量,每个变量只包含一个所涉及的头文件。

我怎样才能在构建时做到这一点?

这是我到目前为止所尝试的(其中 Macro1.h 和 Macro2.h 是我无法修改的第三方文件):

头文件:

TestMultiMacros.h:

#ifndef TEST_MULTI_MACROS_H
#define TEST_MULTI_MACROS_H

struct Values
{
    static const unsigned int val1, val2;
    static const unsigned int c1 = 123, c2 = 123;
};

#endif // TEST_MULTI_MACROS_H
Run Code Online (Sandbox Code Playgroud)

宏1.h:

#ifndef MACRO1_H
#define MACRO1_H

#define MY_MACRO 123

#endif // MACRO1_H
Run Code Online (Sandbox Code Playgroud)

宏2.h:

#ifndef MACRO2_H
#define MACRO2_H

#define MY_MACRO 123

#endif // MACRO2_H
Run Code Online (Sandbox Code Playgroud)

实现文件:

TestMultiMacros1.cpp:

#include "TestMultiMacros.h"
#include "Macro1.h"

const unsigned int Values::val1 = MY_MACRO;
Run Code Online (Sandbox Code Playgroud)

TestMultiMacros2.cpp:

#include "TestMultiMacros.h"
#include "Macro2.h"

const unsigned int Values::val2 …
Run Code Online (Sandbox Code Playgroud)

c++ compile-time c-preprocessor c++11 c++17

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