conditional-compilation 相关问题

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

#如果!如果 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

仅在运行测试时生成调试输出

Rust/Cargo 具有很好的内置构建和测试功能,您可以通过 cargo build、cargo build --release、cargo run 和 cargo te 区分您想要构建和运行代码的方式...

回答 0 投票 0

创建功能门控枚举变体是不好的做法吗? [关闭]

如果库 crate 定义了一个枚举,该枚举的变体是功能门控的? #[非详尽] 枚举 Foo { A, 乙, #[cfg(feature = "some-feature")] 门控, } 这是一个...

回答 1 投票 0

世界上哪里有“条件编译符号?”

如果您从旧版本的 VS 过渡到 VS2022,您会注意到“条件编译符号”不见了! 请参阅下面的解决方案,了解如何找到它。

回答 1 投票 0

Visual Studio 2017条件编译符号不能用于发布工作

我正在用VS 2017开发一个C# Web应用程序。我使用条件编译符号为我的Debug、Test和Release构建设置变量的不同值。当我在我的 ...

回答 1 投票 0

如何使用带路径的库的MACRO来避免在C语言中两次包含一个库?

我如何使用#ifndef来处理这样的库#include ".logname.h",在一个有多个源文件和头文件的项目中只插入一次库。

回答 1 投票 0

在`cfg`宏下使用条件编译的模块

我想知道如何在cfg下使用条件编译模块!宏。我正在尝试:pub fn f(){...}#[cfg(feature =“ x”)] pub mod xmodule {pub fn f(){...}} pub fn test(){如果是cfg! (...

回答 1 投票 0

[在Windows和Linux上进行C ++编译:ifdef开关[重复]

我想在Linux和Windows上运行一些c ++代码。我只想为一个操作系统而不是其他操作系统包括一些代码。有一次可以使用的标准#ifdef吗? ...

回答 7 投票 169

快速可用性检查不包括macOS

我的应用程序中有一个代码,我想在iOS 13或更高版本上执行。因此,我使用的是标准的可用性检查:如果#available(iOS 13.0,*){返回Color.systemGray6.resolvedColor(with:trait!)...

回答 1 投票 0

Android中的#ifdef

我正在编写Android应用程序。我的应用程序必须在Android 2.2和Android 4.0.3下启动,并且我想在Android中使用#ifdef之类的东西,但我仍然找不到解决方法...

回答 3 投票 2

如何在csproj中检查条件编译符号

出于安全原因,我需要从生成的exe中排除一些代码和一些文件。我为此使用了条件编译符号SECURE。排除代码很简单#if!SECURE //一些安全代码...

回答 1 投票 1

Swift软件包和`#if canImport(…)`。它是如何工作的?

对不起的标题。我正在尝试构建一个程序包,以帮助我使用第三方云存储API(例如Firebase Storage),添加Combine支持等。此程序包对...

回答 1 投票 0

Swift软件包和`#if canImport(…)`。它是如何工作的?

对不起的标题。我正在尝试构建一个程序包,以帮助我使用第三方云存储API(例如Firebase Storage),添加Combine支持等。此程序包对...

回答 1 投票 0

是否可以在build.rs中检测Windows版本?

正如标题所述。我正在build.rs中构建一些C文件,并且需要根据Windows版本有条件地设置一些define /有条件链接库。有没有办法检测...

回答 1 投票 0

是否存在基于常量存在条件的条件编译的方法?

libc库定义了许多常量,这些常量可以作为标志传递给open(),例如O_APPEND,O_CREAT等。其中某些标志仅为某些OS目标定义。如果有...

回答 1 投票 0

条件编译已关闭

所以,我在这里对此很陌生,但是这是我似乎无法解决的问题。批量编写一段代码以启动程序,并模拟一次按键。这是...

回答 3 投票 2

如何将ifdef传递到.f文件

嗨,有什么方法可以在.f文件中添加`ifdef。我有一个.f文件,其中包括分层编译。 `ifdef ASIC rtl / a.v`else rtl / b.v endif这是我的意图,如果通过ASIC作为定义a.v ...

回答 1 投票 -1

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.