标签: conditional-compilation

#ifdef 不起作用。但为什么?

#ifdef doesn't work. But why? 

CGFloat maxScale;

if ( [[UIScreen mainScreen] respondsToSelector: @selector (scale)] == YES )
{
    NSLog (@"case1");
#define GLOBAL1
}
else 
{
    NSLog (@"case2");
#undef GLOBAL1
}

#ifdef GLOBAL1
NSLog (@"first");
maxScale = 1.0 / [[UIScreen mainScreen] scale];
#else
NSLog (@"second");
maxScale = 1.0;
#endif

#undef GLOBAL1
Run Code Online (Sandbox Code Playgroud)

我的日志:案例1,第二个。但首先必须是case1。

iphone conditional-compilation

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

是否有可能在函数内有条件地编译代码块?

我想知道这样的事情是否可行

fn main() {
    #[cfg(foo)] {
        println!("using foo config");
    }

}
Run Code Online (Sandbox Code Playgroud)

上下文是一些仅使用单元测试无法充分测试的代码.我经常要运行一个显示信息的"demo"cfg.我正在寻找手动注释/删除某些代码部分的替代方法.

conditional-compilation rust

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


使用多个 .cpp 文件替代 C++ 中的条件编译

假设我有一个使用条件编译的 C++ 类:

hpp

namespace NS{
  class C {
    public:
      C(void);
      ~C(void);
      int func( int arg1 );
    private:
      int memberVar;
}
Run Code Online (Sandbox Code Playgroud)

C.cpp:

#include "C.hpp"

namespace NS{
  C::C( void ){ memberVar = 0; }
  C::~C( void ) {}
  int C::func( int arg1 ){
    int retval = 0;
    memberVar = arg1;
#ifdef DEV_BUILD
    retval = memberVar;
    printf( "memberVar was set.\n" );
#endif
    return retval;
  }
}
Run Code Online (Sandbox Code Playgroud)

(这是一个简化的例子;想象一下这个类C有几百行长,它的一些函数使用条件编译,每个函数都使用相同的条件:#ifdef DEV_BUILD。应用程序是一个嵌入式系统应用程序,条件被使用区分测试硬件和生产硬件,它们有一些区别)

我被建议改为在单独的 .cpp 文件中实现 funcs ......但我有点不知道最好的方法是什么。

我的第一个冲动是创建 C_dev.cpp 和 C_prod.cpp,C::func()在每个中实现不同,并因此编辑 C.cpp: …

c++ conditional-compilation

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

是否可以使用ant修改源代码?

我想在我的程序中进行条件编译.我知道如果你声明一个public static final boolean,编译器将忽略未遍历的分支.在构建程序之前,是否可以让ant目标更改变量?

例如,如果我有:

final public static boolean windows = false;

我想要两个蚂蚁目标:Windows和Mac.我希望命令 ant windows 将布尔值更改为true,同时 ant mac 保留变量.

谢谢.

java ant preprocessor conditional-compilation

0
推荐指数
1
解决办法
4630
查看次数

#ifdef与gfortran 77

我正在使用gfortran编译FORTRAN 77,并希望通过使用预处理器指令#ifdef来获得DEBUG构建选项.但是,当我使用它们时,我得到编译时警告"非法预处理程序指令".是否可以在不偏离标准工具链的情况下使用此功能?

debugging preprocessor conditional-compilation fortran77

0
推荐指数
1
解决办法
3840
查看次数

linux/unix和makefile

在linux make file中:
我只想在编译成功的情况下运行输出程序.

有没有办法做到这一点?

unix linux makefile compilation conditional-compilation

0
推荐指数
1
解决办法
318
查看次数

GWT JSNI中的Javascript条件编译

我有这个条件编译语句,它评估浏览器是否IE:

ie = /*@cc_on!@*/false;
if (ie) {
 //do IE specific stuff..
}
Run Code Online (Sandbox Code Playgroud)

我需要在JSNI中的GWT中使用它.但是当我这样做时:

public native void JS()  /*-{
 ie = /*@cc_on!@*/false;
}-*/;
Run Code Online (Sandbox Code Playgroud)

我在该行上收到错误,如语法错误,}预期.我试过了,eval但仍然存在错误.我该如何解决?

javascript gwt conditional-compilation jsni

0
推荐指数
1
解决办法
1035
查看次数

带C的多个条件编译宏

我正在尝试设置一个makefile来编译一个相当迟缓的程序的多个段.为了做到这一点,我希望Makefile能够一次传递MULTIPLE调试标志所以我可以一起测试多个不同的函数集.

所以在我的Makefile中:

debug:
    gcc -Wall -O -o my_malloc main.c -D experimental leak  <-- SECOND FLAG
    ./my_malloc 
Run Code Online (Sandbox Code Playgroud)

在我的C代码中我想做:

    #ifdef experimental
        printf("MALLOC PROGRAM IN DEBUGGING MODE\n");
    #endif
    //executing both conditionals at once in one line. 
    #ifdef leak
    puts("TESTING LEAK DETECTION");
    #endif
Run Code Online (Sandbox Code Playgroud)

c gcc makefile conditional-compilation compiler-flags

0
推荐指数
1
解决办法
889
查看次数

有条件地运行测试,生成标志不起作用

我在golang中运行一些测试,我想避免运行慢速,例如这个使用bcrypt所以它很慢:

// +build slow
package services

import (
    "testing"
    "testing/quick"
)

// using bcrypt takes too much time, reduce the number of iterations.
var config = &quick.Config{MaxCount: 20}

func TestSignaturesAreSame(t *testing.T) {
    same := func(simple string) bool {
        result, err := Encrypt(simple)
        success := err == nil && ComparePassWithHash(simple, result)
        return success
    }

    if err := quick.Check(same, config); err != nil {
        t.Error(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

为了避免在每次迭代中运行它,我都设置了// +build slow标志.这应该只在执行时运行,go test -tags slow但不幸的是它每次都在运行(-v标志显示它正在运行).

知道什么是错的吗?

testing conditional-compilation go property-based-testing

0
推荐指数
1
解决办法
61
查看次数