标签: compiler-directives

Monotouch编译器指令,如果调试

在我的MonoTouch应用程序中,如何在调试模式下输入#compiler指令以包含代码?

c# compiler-directives xamarin.ios

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

Scala:代码仅在调试时运行(#ifdef等效?)

在C++中我可以写:

#ifdef DEBUG
cout << "Debugging!" << endl;
Run Code Online (Sandbox Code Playgroud)

Scala中有没有相应的东西?

debugging scala compiler-directives scala-macros

6
推荐指数
3
解决办法
1564
查看次数

将单元添加到项目是从项目源中删除编译器指令

这应该是这样工作还是我做错了什么?

我在我的项目源代码中有这个代码:

  {$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)

添加新单元后,我必须始终将其恢复为条件语句.有没有办法在没有添加新单元干扰的情况下实现这一目的?

delphi compiler-directives

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

不遵守Cython编译器指令language_level

我正在使用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存储库上提出了同样的问题

compiler-directives cython python-2.7 python-3.x cythonize

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

用于评估反向参数的Delphi编译器指令

使用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并盲目地检索他发现的第一件事不是一个真正的程序员.

delphi compiler-directives

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

在编写iOS应用程序时评论标准?

天儿真好程序员,我是从Java的背景,但是我刚开始学习C++Objective C的.当我在第三方Objective C代码中有如此多的不同编码风格时,我很担心.但我陷入两难境地.

我的困境是在编写iOS应用程序时是否使用#pragma标签?它被认为是一种好习惯吗?或者程序员自己选择那些指令下拉链接?

您的专业知识和行业经验将有所帮助,

谢谢


  • 我在互联网上搜索的内容主要是建议#pragma做什么.但我找不到关于它是否被认为是良好做法的更多信息.

objective-c compiler-directives ios

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

C++,使用#if TRUE条件指令

使用类似的声明时#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

5
推荐指数
2
解决办法
4280
查看次数

用于shorttrings的Delphi编译器指令不起作用?

我正在尝试将项目从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.是否有任何其他的方式可以让编译器治疗stringshortstring或者是更换的所有出现的唯一解决方案 stringshortstring源代码?

delphi string compiler-directives delphi-xe2

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

4
推荐指数
2
解决办法
348
查看次数

如何__future__进口工作

我对__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

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