在我的MonoTouch应用程序中,如何在调试模式下输入#compiler指令以包含代码?
在C++中我可以写:
#ifdef DEBUG
cout << "Debugging!" << endl;
Run Code Online (Sandbox Code Playgroud)
Scala中有没有相应的东西?
这应该是这样工作还是我做错了什么?
我在我的项目源代码中有这个代码:
{$IFDEF DEBUG}
ADebugUnit,
{$ELSE}
ARelaseUnit,
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)
我希望在调试模式下使用ADebugUnit,但在发布模式下编译时使用AReleaseUnit.当我选择向项目添加新单元时,这种方法效果很好.当我这样做时,它基本上将处理代码,并且只保留与项目当前设置的任何配置相关的单位.
例如,如果配置设置为Debug,那么在向项目添加新单元后,上面的代码将更改为:
ADebugUnit,
Run Code Online (Sandbox Code Playgroud)
或者,如果我的配置设置为Release,则在添加新单元后将更改为以下内容:
ARelaseUnit,
Run Code Online (Sandbox Code Playgroud)
添加新单元后,我必须始终将其恢复为条件语句.有没有办法在没有添加新单元干扰的情况下实现这一目的?
我正在使用Cython的编译器指令(http://docs.cython.org/en/latest/src/reference/compilation.html#globally)。
$ cat temp.pyx
# cython: language_level=3
print("abc", "def", sep=" ,") # invalid in python 2
Run Code Online (Sandbox Code Playgroud)
编译:
$ cythonize -i world_dep.pyx
Error compiling Cython file:
------------------------------------------------------------
...
# cython: language_level=3
print("abc", "def", sep=" ,") ^
------------------------------------------------------------
temp.pyx:4:23: Expected ')', found '='
Run Code Online (Sandbox Code Playgroud)
因此,language_level指令未得到尊重。因此,cythonize最终使用Python 2语义,并且由于上述print语句在Python 2中无效而引发错误。
但是,包括任何Python语句都可以完成以下工作:
$ cat temp.pyx
# cython: language_level=3
import os
print("abc", "def", sep=" ,")
Run Code Online (Sandbox Code Playgroud)
编译和执行:
$ cythonize -i temp.pyx; python -c "import temp"
abc, def
Run Code Online (Sandbox Code Playgroud)
知道import语句如何使language_level得到尊重吗?
我也在Cython GitHub存储库上提出了同样的问题?
使用Math.pas的IFThen函数,我对这个delphi二线程印象非常深刻.但是,它首先评估DB.ReturnFieldI,这是不幸的,因为我需要调用DB.first来获取第一条记录.
DB.RunQuery('select awesomedata1 from awesometable where awesometableid = "great"');
result := IfThen(DB.First = 0, DB.ReturnFieldI('awesomedata1'));
Run Code Online (Sandbox Code Playgroud)
(作为一个毫无意义的澄清,因为我已经有了很多好的答案.我忘了提到0是DB.First返回的代码,如果它有内容,否则可能没有意义)
显然这不是什么大问题,因为我可以使用五个强大的衬垫.但是我需要的就是让Delphi首先评估DB.first,然后再评估DB.ReturnFieldI.我不想改变math.pas而且我认为这不保证我会过度使用ifthen,因为它有16个ifthen函数.
只是让我知道编译器指令是什么,如果有更好的方法来做到这一点,或者如果没有办法做到这一点,任何人的程序是调用db.first并盲目地检索他发现的第一件事不是一个真正的程序员.
天儿真好程序员,我是从Java的背景,但是我刚开始学习C++和Objective C的.当我在第三方Objective C代码中有如此多的不同编码风格时,我很担心.但我陷入两难境地.
我的困境是在编写iOS应用程序时是否使用#pragma标签?它被认为是一种好习惯吗?或者程序员自己选择那些指令下拉链接?
您的专业知识和行业经验将有所帮助,
谢谢
使用类似的声明时#if TRUE,我应该发生什么?非常感谢您的解释!我理解#if 1它是如何工作的,但它在我的代码中给出了完全不同的结果而不是使用#if TRUE.我理解#if是条件指令,这意味着什么; 它只是我不理解的TRUE(或FALSE)部分.似乎以这种方式使用它从不执行语句后面的代码.这是一个例子:
#if TRUE
cout << "true" << endl;
#endif
#if FALSE
cout << "false" << endl;
#endif
Run Code Online (Sandbox Code Playgroud)
我似乎永远不会在屏幕上看到"true"或"false",并且使用Visual Studio,内部语句会自动显示为灰色.
c++ compiler-directives visual-studio visual-c++ c-preprocessor
我正在尝试将项目从Delphi 4移植到Delphi XE2.我有要求shortstring在项目中使用.根据Delphi帮助,$ H-应该使编译器使用string类型的短串.我已经使用了这个指令,但我没有看到任何区别.我写了一个小测试程序:
program Stringtest;
{$APPTYPE CONSOLE}
{$R *.res}
{$H- }
uses
System.SysUtils;
var
str : string;
short : shortstring;
begin
try
str := 'testing';
short := 'testing';
Writeln('str ' +Format('%d', [sizeOf(str)]) );
Writeln('short ' +Format('%d', [sizeOf(short)]) );
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Run Code Online (Sandbox Code Playgroud)
在我看来,两者的输出应该是相同的str,short因为编译器应该将两者都视为一个shortstring.但是大小是4 for str和256 short.是否有任何其他的方式可以让编译器治疗string的shortstring或者是更换的所有出现的唯一解决方案 string与shortstring源代码?
Delphi在使用{.$ DEFINE VAR}和{$ DEFINE VAR}编译器指令之间有什么区别?
我对__future__模块很着迷- 特别是它能够改变在python中解析语句的方式.
最有趣的是如何做类似的事情
from __future__ import print_function
Run Code Online (Sandbox Code Playgroud)
使您可以使用print(而不是print_function像您期望的任何其他正常导入一样).
我已经阅读了Python中使用的__future__是什么以及如何/何时使用它,以及它如何彻底运行,特别是遇到了一个特定的行:
未来的声明是编译器的一个指令,即应该使用将在Python的指定未来版本中提供的语法或语义来编译特定模块.
我很想知道究竟是什么使这成为可能的复杂性.特别是,怎么样
from __future__ import division
Run Code Online (Sandbox Code Playgroud)
可以在python2上启用真正的除法
from __future__ import barry_as_FLUFL
Run Code Online (Sandbox Code Playgroud)
可以<>在python3上启用语法(我发现最有趣的是你必须从" __future__" 导入一个功能以实现向后兼容).
无论如何,总而言之,我想知道编译器在__future__导入它的人工制品时如何理解和执行该指令.
python import compiler-directives python-2.7 python-internals
delphi ×4
python-2.7 ×2
c# ×1
c++ ×1
cython ×1
cythonize ×1
debugging ×1
delphi-xe2 ×1
import ×1
ios ×1
objective-c ×1
python ×1
python-3.x ×1
scala ×1
scala-macros ×1
string ×1
visual-c++ ×1
xamarin.ios ×1