标签: conditional-compilation

在aspx页面中使用#if DEBUG条件编译语句

我想在aspx页面中做这样的事情:

<head runat="server">
    <% #if DEBUG %>
        <script src="jquery-1.3.2.js" type="text/javascript"></script>
    <% #else  %>
        <script src="jquery-1.3.2.min.js" type="text/javascript"></script>
    <% #endif %>
</head>
Run Code Online (Sandbox Code Playgroud)

我收到错误"预处理程序指令必须显示为一行中的第一个非空白字符".我怎样才能做到这一点?

webforms conditional-compilation

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

Java日志API开销

我已经阅读了一些关于使用Java记录调试消息的各种方法,并且来自C背景我的关注点如下:

这些库声称在禁用日志记录(例如生产环境)的情况下开销最小,但由于log()仍在评估其功能的参数,我担心的是实际情况中的开销实际上根本不可忽略.

例如,log(myobject.toString(), "info message")仍然有一个评估的开销myobject.toString(),即使日志函数本身什么都不做也可能相当大.

有没有人有这个问题的解决方案?

PS:对于那些想知道为什么我提到C背景的人:C允许你使用预处理器宏和编译时指令,这些指令将在编译时完全删除与调试相关的所有代码,包括宏参数(根本不会出现).

编辑:在阅读了第一批答案之后,似乎java显然没有任何可以解决这个问题的东西(想想在每个CPU都很重要的移动环境中在一个大循环中记录数字的余弦).所以我要补充一点,我甚至会选择基于IDE的解决方案.我的最后一招是构建类似"查找所有/替换"宏的东西.我首先想到的是,从面向方面的框架中抓取的东西可能会有所帮助......任何人?

java logging conditional-compilation overhead

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

是否有带有条件指令的JavaScript缩小器?

我正在寻找一种JavaScript缩小器,它将对类似于条件编译指令的东西提供某种支持.

例如,原始JavaScript代码可能看起来像这样:

//#if Dev
    showLoginScreen();
//#else
    login("DevUser", "qwerty1");
//#endif
Run Code Online (Sandbox Code Playgroud)

所以原始代码可以包含一个指令#define Dev但是一旦它进入生产#define Dev就会被删除,并且minifier login("DevUser", "qwerty1");将从它的输出中排除该行.

任何缩小器是否支持这种行为?

javascript conditional-compilation minify

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

在不使用条件编译的情况下加速C程序

我们正在研究一种模型检查工具,它可以执行几十亿次搜索程序.我们有不同的搜索例程,目前使用预处理器指令进行选择.这不仅非常不方便,因为我们每次做出不同的选择时都需要重新编译,但也使代码难以阅读.现在是开始新版本的时候了,我们正在评估是否可以避免条件编译.

这是一个非常人为的例子,显示了效果:

/* program_define */

#include <stdio.h>
#include <stdlib.h>

#define skip 10

int main(int argc, char** argv) {
    int i, j;
    long result = 0;

    int limit = atoi(argv[1]);

    for (i = 0; i < 10000000; ++i) {
        for (j = 0; j < limit; ++j) {
            if (i + j % skip == 0) {
                continue;
            }
            result  += i + j;
        }
    }

    printf("%lu\n", result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里,变量skip是影响程序行为的值的示例.不幸的是,我们需要在每次需要新值时重新编译skip.

让我们看看该程序的另一个版本:

/* program_variable */

#include …
Run Code Online (Sandbox Code Playgroud)

c optimization conditional-compilation c-preprocessor

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

在项目主单元中使用条件 - IDE会破坏代码

我正在构建一个Windows服务应用程序,它具有将其编译为基本Windows应用程序的配置.exe的主项目文件包括条件,用于确定项目是作为服务应用程序还是作为Windows窗体应用程序编译.

问题是,当我做一些使项目代码发生变化的事情时,代码就会被破坏和破坏.例如,一行表示Application.Initialize;变为AppliApplication.Initialize;和已{$R *.RES}减少的行S},并且我的大部分条件都被删除.

我想知道是否有办法克服这个问题,如果有任何技巧,或者我是否只需要笑着忍受它?

这是下面的文件,因为我希望它留下来......

program JDRMServer;

uses
{$IFDEF TESTAPP}
  FastMM4,
  Vcl.Forms,
{$ELSE}
  Vcl.SvcMgr,
{$ENDIF TESTAPP}
  uJDRMServer in 'uJDRMServer.pas' {JDRMSvr: TService},
  uJDRMSessions in 'uJDRMSessions.pas',
  uJDRMSvrCli in 'uJDRMSvrCli.pas',
  uJDRMSvrDsh in 'uJDRMSvrDsh.pas',
  JDDB in 'JDDB.pas',
  uJDRMServerTEST in 'uJDRMServerTEST.pas' {JDRMSvrTest},
  uJDRMServerThread in 'uJDRMServerThread.pas',
  uJDRMSvrMessages in 'uJDRMSvrMessages.pas';

{$R *.RES}

begin

{$IFDEF TESTAPP}
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TJDRMSvrTest, JDRMSvrTest);
{$ELSE}
  if (not Application.DelayInitialize) or (Application.Installing) then
    Application.Initialize;
  Application.CreateForm(TJDRMSvr, JDRMSvr);
{$ENDIF TESTAPP}
  Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)

delphi conditional-compilation project-files delphi-xe2

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

如何检查变量是否在D中声明?

如何检查变量是否存在,即已在D中声明?

背景是我想使用版本条件,但仍然有一个默认值:

version(A)
{
  immutable int var = 1;
}
version(B)
{
  immutable int var = 2;
}
// this is pseudo code
if (var is not yet declared)
{
  immutable int var = 3;
}
Run Code Online (Sandbox Code Playgroud)

我只是假设这在D中是可能的,因为它有如此多的内省......

d introspection conditional-compilation compile-time-constant

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

Java中的任何机制都提供编译时代码变体?

我正在为Java中的数据结构编写一组可视化接口.我们的想法是这些类应该是算法的高性能实现,但是使用嵌入式钩子,以便可以交互地显示算法.

这样做有很多原因,但是如果你接受这个面值的请求,我想在算法中嵌入调用来识别刚刚完成的特定子部分.例如,排序算法的一次通过.

我希望图书馆既高效又允许这样做.在C++中,我会插入两个不同的模板或使用条件编译,并且可以合理地生成两个版本的代码.有没有办法在Java中实现这一点?我希望别人可以拿出一个,因为我做不到.

新闻快讯.我试过这个实际的代码.

对于n = 100,000,插入排序大约需要9800毫秒,其中VISUALIZE作为静态变量但不是最终的,而大约3100表示​​已注释掉.因此性能损失是不可接受的.

通过可视化为静态最终,优化器确实检测到它并将其删除,但鉴于它是最终的,我可以用它做什么?我不能动态打开和关闭可视化!

public class TestSort {
    private static boolean VISUALIZE = false; 
    private static ArrayObserver ao;
    public static void insertionSort(int[] x) {
        for (int i = 1; i < x.length; i++) {
            int temp = x[i];
            int j = i - 1;
            if (x[j] > temp) {
                do {    
                    x[j+1] = x[j];
/*              if (VISUALIZE) {
                        ao.compare(i-1, i);
            ao.copy(i-1, i);
            }*/
                } while (--j >= 0 && x[j] > temp);
                x[j+1] = temp;
            } …
Run Code Online (Sandbox Code Playgroud)

java conditional-compilation compile-time

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

忽略xcode 5编译中的ios8代码

我有一个团队正在研究一些IOS代码.一位开发人员(我)拥有Xcode6-beta和几行IOS8特定代码.当另一个Xcode5的开发人员为IOS7构建它时,编译失败,因为他不存在IOS8 SDK.

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
    // ios8 code
} else {
    // ios7 and less way
}
Run Code Online (Sandbox Code Playgroud)

有没有办法忽略基于SDK或Xcode版本的Xcode编译中的IOS8代码,以便编译?

xcode conditional-compilation

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

DEBUG和RELEASE用Java(Eclipse)构建?

Java和Eclipse的新手(但在Visual Studio和Delphi方面经验丰富).使用Eclipse Mars(4.5)并且无法找到如何设置构建配置(DEBUG或RELEASE).几个相关问题:

  • Java中是否支持DEBUG/RELEASE?
  • 如何在两种配置之间切换?
  • 你能在构建时检测配置并运行这样的条件代码(以Delphi为例): {$IFDEF DBG} CallDebugFunction(); {$ELSE} CallReleaseFunction(); {$ENDIF};

java debugging conditional-compilation

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

PowerPC组装中的"ifdef"

我想在汇编代码中创建一个ifdef条件,类似于C中的预处理器.

例如 :

ifdef UNIT_TEST
b somewhere
else
b somewhere else
Run Code Online (Sandbox Code Playgroud)

我正在使用e200z6 PowerPC核心.

c assembly if-statement powerpc conditional-compilation

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