conditional-compilation 相关问题

将包括/排除源代码的某些部分的编译。这通常可以通过以某种方式预处理源代码来实现。包括/排除源的部分可以由预处理器关键字控制。

编译器如何预定义特定于操作系统的预处理器,如 __linux__、__apple__ 等?

通常使用预定义的预处理器 __linux__ 和 __apple__ 进行条件编译,如下所示: #如果已定义(__linux__) 内联无效 foo() { // Linux 特定的实现 } #结束...

回答 1 投票 0

使用knitr有条件地显示Markdown文本块

我想编辑一个带有“问题”列表的单个 rmarkdown (Rmd) 文档,每个问题都有其解决方案。每个解决方案可能包含 R 控制台的结果,但也包含一些解释...

回答 3 投票 0

如果设置了标志(构建库或使用它的目标之一时),Bazel 会条件编译 C++ 库

我正在尝试使用 bazel 有条件地编译 C++ 库,具体取决于在构建/运行使用该库的目标之一或库本身时是否设置了特定标志。 我的图书馆...

回答 1 投票 0

Swift 条件编译访问控制

我正在构建一个iOS框架,我需要在公共应用程序和一些内部应用程序中使用相同的框架,不同之处在于,在内部应用程序中我需要访问一些类和功能...

回答 1 投票 0

有没有办法指定仅在 Rust 测试中有效的断言?

我正在实现一个具有内部不变量的数据结构,我想通过测试来覆盖它。这个不变量是数据结构的一部分;因此,如果实施得当,永远不会违反...

回答 1 投票 0

Clion:条件编译标志

我在多个源文件中有一些条件编译标志,如下所示: #ifdef 标志1 代码 ... #万一 根据某些条件,我在 Makefile 中启用了这些标志...

回答 2 投票 0

从一个源文件生成多个对象文件

问题 在编译期间获取多个源文件并生成单个目标文件是相当常见的(g++ -c file1.cpp file2.cpp)。是否有可能走另一条路并创建多个

回答 1 投票 0

C++ 中 #ifdef Defined() 的奇怪行为

我正在 Visual Studio Community 中使用 C++20 编写跨平台代码,但我陷入了以下代码的输出: #define WINDOWS (定义(WIN32) || 定义(_WIN32) || 定义(__WIN32__) ||

回答 1 投票 0

仅在 Visual Studio 2022 中运行时对代码进行条件编译

我们有一些模拟代码,我只想在 VS2022 中运行时运行。有谁知道是否有一个预处理器变量(或其他方式)我可以用来检查这种情况,...

回答 1 投票 0

Rust:是否有一个列表,列出什么目标是哪个“目标家族”的成员?

当尝试编写或解释 cfg 语句时,例如 #[cfg(全部(unix, not(target_arch = "wasm32")))] 从 atty 的箱子里, 我有时不确定unix在这里到底意味着什么。 (看来...

回答 1 投票 0

在调试构建中仍调用 [Conditional("RELEASE")] 的 C# 库方法

我在MyLib.dll中有以下代码: [已过时(“此方法仅用于调试。完成后删除对此方法的所有调用。”)] 公共无效SetLaunchCount(int计数) { ...

回答 1 投票 0

应用程序扩展可以有条件地包含在构建中吗?

我正在开始开发 2 个应用程序扩展,我想按如下方式设置我的构建: 面向 App Store 的构建不应包含任何扩展 用于 TestFlight 的构建应包括...

回答 1 投票 0

如何对某个配置下定义的函数进行测试?

如何对定义一些配置的函数进行单元测试,如下所示 结构 I32Add; 实现 I32Add{ #[cfg(不稳定)] fn add(x:i32, y:i32) -> i32{x+y} } #[测试] fn add_test()...

回答 1 投票 0

如何使用cfg在不同的目标架构上设置不同的属性?

我有一个结构体,当目标为 wasm 时,它必须是 16 字节对齐的。 我怎样才能做到这一点? 例如,我想在 wasm 上使用这个结构: #[cfg(target_arch = "wasm32")] <- not sure ab...

回答 1 投票 0

如何使用 cfg 排除架构?

我正在开发一个应针对 wasm 的项目,但某些功能将不受支持。 看起来我可以通过这种方式有条件地包含一个函数: #[cfg(target_arch = "wasm32&q...

回答 1 投票 0

如何根据平台选择序列化和反序列化模块?

有没有办法在 #[serde(with = "path_handling")] 上添加基于平台的条件? 所以,基本上我只想在 Inix 中使用这个 customere Serde 方法,在 Windows 上我想使用 def...

回答 1 投票 0

#如果!如果 SOME_MACROS 始终具有数值,则 SOME_MACROS 相当于 #ifndef SOME_MACROS [重复]

可能这是重复的,我找不到类似的问题。 令我惊讶的是,以下代码适用于所有三大编译器,没有错误 #包括 int main() { #if !_LIBCPP_VERSI...

回答 1 投票 0

根据模板参数比较条件代码

大家!想要根据模板参数使方法编译不同。 模板 类 DFixed { 民众: 无符号长值; ... 模板 大家!想要根据模板参数使方法编译不同。 template <unsigned long prec> class DFixed { public: unsigned long val; ... template <unsigned long prec1> DFixed<prec> &operator-=(DFixed<prec1> d) { #if prec==prec1 val -= d.val; #elif prec<prec1 val -= d.val/(prec1/prec); #else val -= d.val*(prec/prec1); #endif return *this; } ... }; 但是上面的代码即使对于不同的 prec 也会调用 prec==prec1 的 block。 正如已经说过的,C++17的if constexpr是最好的解决方案: template <unsigned long prec1> DFixed & operator-=(DFixed<prec1> d) { if constexpr (prec==prec1) val -= d.val; else if constexpr (prec<prec1) val -= d.val/(prec1/prec); else val -= d.val*(prec/prec1); return *this; } 如果您使用的是 C++11,则可以将 SFINAE 与隐藏在 REQUIRES 宏中的 std::enable_if 一起使用: #define REQUIRES(...) typename std::enable_if<(__VA_ARGS__), int>::type = 0 template <unsigned long prec1, REQUIRES(prec==prec1)> DFixed & operator-=(DFixed<prec1> const & d) { val -= d.val; return *this; } template <unsigned long prec1, REQUIRES(prec<prec1)> DFixed & operator-=(DFixed<prec1> const & d) { val -= d.val/(prec1/prec); return *this; } template <unsigned long prec1, REQUIRES(prec>prec1)> DFixed & operator-=(DFixed<prec1> const & d) { val -= d.val*(prec/prec1); return *this; } 请注意,输入参数d是通过const引用传递的,以避免不必要的复制。 看来你想使用类似的东西 if constexpr (prec == prec1) { // one branch } else { // other branch } if constexpr 是随 C++17 引入的。 我还有另一个问题,我想根据模板值声明或不声明类参数: template<unsigned int N,class T> union Vec{ public: T array[N]; struct{ //if N>0 T x; //if N>1 T yn; //if N>2 T z; //if N>3 T w; }; }; 有人知道怎么做吗? 预先感谢。

回答 3 投票 0

在 Rust 中使用多个 use 语句只使用一个特征标志属性

Rust 中的多个 use 语句是否可以只使用一个功能标志属性? 是这样的: #[cfg(feature = "my-flag")] { 使用加密::sha2::Sha256; 使用 ethers::uti...

回答 2 投票 0

如何使用预处理器根据平台或架构有条件地编译代码?

我正在编写需要在多个平台或架构上运行的代码,例如 x86、ARM 或 MIPS。 我想限制或有时必须为特定

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.