我想在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)
我收到错误"预处理程序指令必须显示为一行中的第一个非空白字符".我怎样才能做到这一点?
我已经阅读了一些关于使用Java记录调试消息的各种方法,并且来自C背景我的关注点如下:
这些库声称在禁用日志记录(例如生产环境)的情况下开销最小,但由于log()仍在评估其功能的参数,我担心的是实际情况中的开销实际上根本不可忽略.
例如,log(myobject.toString(), "info message")仍然有一个评估的开销myobject.toString(),即使日志函数本身什么都不做也可能相当大.
有没有人有这个问题的解决方案?
PS:对于那些想知道为什么我提到C背景的人:C允许你使用预处理器宏和编译时指令,这些指令将在编译时完全删除与调试相关的所有代码,包括宏参数(根本不会出现).
编辑:在阅读了第一批答案之后,似乎java显然没有任何可以解决这个问题的东西(想想在每个CPU都很重要的移动环境中在一个大循环中记录数字的余弦).所以我要补充一点,我甚至会选择基于IDE的解决方案.我的最后一招是构建类似"查找所有/替换"宏的东西.我首先想到的是,从面向方面的框架中抓取的东西可能会有所帮助......任何人?
我正在寻找一种JavaScript缩小器,它将对类似于条件编译指令的东西提供某种支持.
例如,原始JavaScript代码可能看起来像这样:
//#if Dev
showLoginScreen();
//#else
login("DevUser", "qwerty1");
//#endif
Run Code Online (Sandbox Code Playgroud)
所以原始代码可以包含一个指令#define Dev但是一旦它进入生产#define Dev就会被删除,并且minifier login("DevUser", "qwerty1");将从它的输出中排除该行.
任何缩小器是否支持这种行为?
我们正在研究一种模型检查工具,它可以执行几十亿次搜索程序.我们有不同的搜索例程,目前使用预处理器指令进行选择.这不仅非常不方便,因为我们每次做出不同的选择时都需要重新编译,但也使代码难以阅读.现在是开始新版本的时候了,我们正在评估是否可以避免条件编译.
这是一个非常人为的例子,显示了效果:
/* 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) 我正在构建一个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) 如何检查变量是否存在,即已在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
我正在为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) 我有一个团队正在研究一些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代码,以便编译?
Java和Eclipse的新手(但在Visual Studio和Delphi方面经验丰富).使用Eclipse Mars(4.5)并且无法找到如何设置构建配置(DEBUG或RELEASE).几个相关问题:
{$IFDEF DBG} CallDebugFunction(); {$ELSE} CallReleaseFunction(); {$ENDIF};我想在汇编代码中创建一个ifdef条件,类似于C中的预处理器.
例如 :
ifdef UNIT_TEST
b somewhere
else
b somewhere else
Run Code Online (Sandbox Code Playgroud)
我正在使用e200z6 PowerPC核心.
java ×3
c ×2
assembly ×1
compile-time ×1
d ×1
debugging ×1
delphi ×1
delphi-xe2 ×1
if-statement ×1
javascript ×1
logging ×1
minify ×1
optimization ×1
overhead ×1
powerpc ×1
webforms ×1
xcode ×1