标签: conditional-compilation

是否可以在脚本中设置python -O(optimize)标志?

我想在python脚本python -O myscript.py运行时根据脚本的命令行参数设置optimize flag(),如myscript.py --optimizemyscript --no-debug.我想跳过assert声明,而不是把它们全部丢掉.或者是否有更好的方法来有效地忽略python代码的各个部分.是否有蟒蛇等价物#if,并#ifdef在C++?

python optimization assert runtime conditional-compilation

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

C#中不同文件的预处理程序指令

我知道我可以使用预处理器指令C#来启用/禁用某些代码的编译.

如果我在同一个文件中定义一个指令,它可以正常工作:

#define LINQ_ENABLED
using System;
using System.Collections.Generic;

#if  LINQ_ENABLED
using System.Linq;      
#endif
Run Code Online (Sandbox Code Playgroud)

现在,我用于C++将所有这些配置指令放在单个头文件中,并将其包含在我需要这些指令的所有文件中.

如果我做同样的C#事情是行不通的:

//Config.cs
#define LINQ_ENABLED

//MyClass.cs
#define LINQ_ENABLED
using System;
using System.Collections.Generic;

#if  LINQ_ENABLED
using System.Linq;      
#endif
Run Code Online (Sandbox Code Playgroud)

我也试过以下但似乎我无法在命名空间内定义指令:

//Config.cs
namespace Conf{
#define LINQ_ENABLED
}

//MyClass.cs
#define LINQ_ENABLED
using System;
using System.Collections.Generic;
using Conf;
#if  LINQ_ENABLED
using System.Linq;      
#endif
Run Code Online (Sandbox Code Playgroud)
  1. 我究竟做错了什么?
  2. 在不同文件中使用预处理器的正确方法是 C#什么?
  3. 有没有更好的方法呢?

c# conditional-compilation c-preprocessor

10
推荐指数
1
解决办法
7929
查看次数

在Qt中是否有#ifdef来确定我们是否正在为Android构建

我的Qt应用程序中有一个特定于Android的修复程序,我希望只有在为Android构建时才编译该代码.

是否有一个#if#ifdef会做到这一点?

c++ qt android conditional-compilation

10
推荐指数
1
解决办法
4707
查看次数

Browserify,minifyify,条件编译

TL; DR

minifyify(Browserify插件)使用uglify -js但似乎无法处理条件编译:

  • 压缩工作
  • uglifyjs单独适用于条件编译
  • minifyify提供了额外的编译优化,但我无法使用条件编译

我正在使用Browserifybabelify变换器和minifyify插件.这是cmd,在可读部分细分:

browserify src/scripts/app/index.js -o build/prod/public/assets/js/appBundle.min.js -t [ babelify --presets [ es2015 ] ] -p [ minifyify --no-map --uglify [ --compress [ --drop_console --dead_code --conditionals --unused --if_return ] --mangle --screw-ie8 --define [ DEBUG=false ] ] ]

我已经获得了所有设置/选项.但是,我无法使条件编译工作.Minifyify使用uglifyjs的minify方法.我通过minifyify的事实不应该真正改变任何事情.

直接通过uglifyjs建立工程

uglifyjs input.js --compress --dead_code --define DEBUG=false -o output.js

但是我失去了minifyify提供的额外压缩/优化.

我也对另一个构建过程持开放态度.我的需求在当前流程的设置中恢复:

  • CommonJS需要模块
  • 将ES6转换为ES5
  • 先进的缩小/压缩

javascript conditional-compilation uglifyjs browserify bundling-and-minification

10
推荐指数
1
解决办法
1080
查看次数

.NET 4的条件编译

可能重复:
C#条件编译和框架目标

我有一些代码在.NET 4中工作,但在.NET 3.5中不起作用,在.NET 3.5中它需要使用对Windows的互操作调用.

我想在两种情况下使用"ifdef"来使用不同的代码路径(最终我将弃用.NET 3.5代码).

是否有预定义的指令值来确定何时使用.NET4编译代码?是否有与所有预定义指令(DEBUG,TRACE,...)的良好链接?以下链接仅提供指令,但不提供标准预定义值:

http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=VS.100).aspx

c# conditional-compilation .net-4.0 conditional-statements

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

Visual Studio 2012中的DEBUG常量将不会激活

尝试在Visual Studio中使用ifdef DEBUG常量在.NET Framework 4.5,ASP.NET MVC 4中对我不起作用.

我确定:

  • 将检查"定义DEBUG常量"以查找项目属性中的调试配置
  • Web.config确实包含了 <compilation debug="true"...

我用来验证的代码在IDE和运行时都显示isDebug = false,即使我在Debug-configuration下运行:

bool isDebug;
#if DEBUG
    isDebug = true;
#else
    isDebug = false;
#endif
Run Code Online (Sandbox Code Playgroud)

这是Visual Studio的屏幕上限,显示我已将Debug-configuration激活,但在代码中,颜色突出显示DEBUG未定义.

如果DEBUG isDebug = true,则isDebug = false

我肯定错过了什么!

编辑:属性窗口显示的构建视图的屏幕截图: 属性窗口

.net c# asp.net conditional-compilation visual-studio-2012

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

Swift:iOS部署目标命令行标志

如何在Swift条件编译语句中检查iOS部署目标?

我尝试过以下方法:

#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0
    // some code here
#else
    // other code here
#endif
Run Code Online (Sandbox Code Playgroud)

但是,第一个表达式导致编译错误:

Expected '&&' or '||' expression
Run Code Online (Sandbox Code Playgroud)

conditional-compilation buildconfiguration deployment-target ios swift

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

条件编译的自动化错误

尝试加载Excel工作簿时发现奇怪的行为.

我有一个Excel-AddIn,用.NET Interop编写.它主要用于创建我自己的Ribbon-Tab,从菜单中加载工作簿并进行一些项目管理.

当我尝试使用两种方式打开工作簿时,我会得到不同的结果:

首先,当我从Addin中加载工作簿(Excel 2003-版本)时,一切正常.从功能区的Button-Event中,openWorkbook调用application.workbooks.open(...)加载项的公共函数,用于加载Excel工作簿.

这样,工作簿打开时没有错误.

其次,当我尝试使用以下代码从VBA中调用Addin-Function时:

Set addIn = Application.COMAddIns("WMExcelAddin1")
Set automationObject = addIn.Object
automationObject.openWorkbook (filename)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

编译错误

自动化错误

并且IDE在其中一个工作簿模块中第一次出现条件编译时停止,如下所示:

#const ebind = 0
[...]
sub proc1()

     #if ebind = 1 then         ' IDE Stops here
          [...]
     #else
          [...]
     #end if

end sub
Run Code Online (Sandbox Code Playgroud)

我试图使用布尔数据类型而不是具有相同效果的数字.

我的智慧结束了.

excel vba conditional-compilation excel-vba

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

这个C成语是什么(if(1))?

我在openssl源代码中注意到一个奇怪的习惯用语,在这里重复如下:

if ((in == NULL) && (passwds == NULL)) {
        if (1) {                                    (* <---- HERE *)
#ifndef OPENSSL_NO_UI
            /* build a null-terminated list */
            static char *passwds_static[2] = { NULL, NULL };

            passwds = passwds_static;
            if (in == NULL)
                if (EVP_read_pw_string
                    (passwd_malloc, passwd_malloc_size, "Password: ",
                     !(passed_salt || in_noverify)) != 0)
                    goto end;
            passwds[0] = passwd_malloc;
        } else {
#endif
            BIO_printf(bio_err, "password required\n");
            goto end;
        }
}
Run Code Online (Sandbox Code Playgroud)

似乎这段代码相当于:

if ((in == NULL) && (passwds == NULL)) {
#ifndef …
Run Code Online (Sandbox Code Playgroud)

c openssl idioms conditional-compilation

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

如何测试 Rust 中的可选功能?

我有一个包,我想添加一个可选功能。我已在 Cargo.toml 中添加了适当的部分:

[features]
foo = []
Run Code Online (Sandbox Code Playgroud)

我为宏的基本功能编写了一个实验测试cfg!

#[test]
fn testing_with_foo() {
    assert!(cfg!(foo));
}
Run Code Online (Sandbox Code Playgroud)

看起来我可以在测试期间通过以下选项之一激活功能--features--all-features

(master *=) $ cargo help test
cargo-test 
Execute all unit and integration tests and build examples of a local package

USAGE:
    cargo test [OPTIONS] [TESTNAME] [-- <args>...]

OPTIONS:
    -q, --quiet                      Display one character per test instead of one line
        ...
        --features <FEATURES>...     Space-separated list of features to activate
        --all-features               Activate all available features
Run Code Online (Sandbox Code Playgroud)

不过,两者cargo test --features foo testing_with_foo都不起作用。 …

testing unit-testing conditional-compilation rust

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