标签: preprocessor

Java中的#define

我开始用Java编程,我想知道是否#define存在与C++相当的东西.

谷歌的快速搜索说它没有,但任何人都可以告诉我,如果Java中存在类似的东西吗?我正在努力让我的代码更具可读性.

而不是myArray[0]我想能够写myArray[PROTEINS]例如.

java preprocessor c-preprocessor

68
推荐指数
3
解决办法
17万
查看次数

Swift:如何使用PREPROCESSOR Flags(如`#if DEBUG`)来实现API密钥?

Objective-C它是使用静态字符串常量来定义备用API键(例如发布和调试键之间进行区分用于分析套件,像MixPanel,乱舞或Crashlytics)有时是有用的:

#if DEBUG
static NSString *const API_KEY = @"KEY_A";
#else
static NSString *const API_KEY = @"KEY_B";
#endif
Run Code Online (Sandbox Code Playgroud)

然后...

[Analytics startSession:API_KEY];
Run Code Online (Sandbox Code Playgroud)

这是如何转换为Swift的,因为Swift编译器不再使用预处理器?

macros xcode preprocessor swift

67
推荐指数
4
解决办法
5万
查看次数

我需要在 C 预处理器 #if 中测试一个值是否会创建一个 0 大小的数组

我有一个结构必须填充到 64K 才能完美地适合嵌入式项目,以便它填充闪存块。所以有一个#define将结构中的元素加起来使用sizeof()并确定pad[]最后需要多大才能使总大小为64K。

例如 :

#define SIZE_OF_MY_PAD (0x10000 - (sizeof(uint16_t) + sizeof(uint8_t)*32 + ... ))

typedef struct {
  uint16_t firstElement;
  uint8_t  secondElementArray[32];
  ...
  uint8_t pad[SIZE_OF_MY_PAD];
};
Run Code Online (Sandbox Code Playgroud)

这在很长一段时间内一直有效,直到突然我们在某些构建配置中根本不需要垫,因为它已经正好是 64k。这会导致代码失败,因为我们的编译器(不是 GCC)不允许pad[0].

我曾尝试过各种方法来创建一个预处理价值,我可以在使用#if声明中当检测到,但它总是失败,因为虽然sizeof()是合法的#define,它不是法律#if

c preprocessor

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

你会如何在Python中执行等效的预处理程序指令?

有没有办法在Python中执行以下预处理程序指令?

#if DEBUG

< do some code >

#else

< do some other code >

#endif
Run Code Online (Sandbox Code Playgroud)

python preprocessor directive equivalent

61
推荐指数
5
解决办法
3万
查看次数

如何在C/C++文件中检测android ndk的编译?

是否有预处理器宏让我知道ndk正在编译我的代码?我可以手动定义自己的,但如果可能,我宁愿不要.

android preprocessor android-ndk

56
推荐指数
3
解决办法
3万
查看次数

Java预处理器

如果我有一个布尔字段,如:

private static final boolean DEBUG = false;

在我的代码中我有如下声明:

if(DEBUG) System.err.println("err1");

Java预处理器是否只是删除了if语句和无法访问的代码?

java optimization preprocessor

45
推荐指数
2
解决办法
1万
查看次数

WiX未定义的预处理器变量

我开始使用WiX进行自动构建以创建我的c#项目的msi,并且遇到错误"Undefined preprocessor variable'$(var.MyProject.TargetDir)'"

我使用的是最新的WiX v3.0.5419.在我的wxs文件中,我试图使用此网页上列出的预处理器变量(http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor- variables.aspx)

<Component Id="MyId" Guid="MyGuid">
   <File Id="MyId" Name="MyName" KeyPath="yes" 
      Source="$(var.MyProject.TargetDir)\MyName.dll" />
</Component>
Run Code Online (Sandbox Code Playgroud)

我已将MyProject的引用添加到.wixproj中,如果我在记事本中打开它,我可以看到引用.

<ItemGroup>
  <ProjectReference Include="..\MyProject.csproj">
    <Name>MyProject</Name>
    <Project>{guid}</Project>
    <Private>True</Private>
  </ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这是我用来创建msi的nant构建脚本.也许是因为.wixproj知道构建中没有使用的项目引用?

<exec basedir="${tools.wix}" managed="true" program="candle.exe">
  <arg line='-out "${tools.wix.objfile}"' />
  <arg value="../MySetup.wxs" />
</exec>
Run Code Online (Sandbox Code Playgroud)

请问有人能开导我吗?

build-automation preprocessor wix wix3 votive

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

是否有一个C预处理器根据定义/未定义的值消除#ifdef块?

原始问题

我想要的不是标准的C预处理器,而是可以从某个地方接受的变体 - 可能是命令行通过-DNAME1和-UNAME2选项 - 定义了哪些宏的规范,然后消除了死码.

通过一些例子可能更容易理解我所追求的内容:

#ifdef NAME1
#define ALBUQUERQUE "ambidextrous"
#else
#define PHANTASMAGORIA "ghostly"
#endif
Run Code Online (Sandbox Code Playgroud)

如果命令是使用'-DNAME1'运行的,则输出将为:

#define ALBUQUERQUE "ambidextrous"
Run Code Online (Sandbox Code Playgroud)

如果命令是使用'-UNAME1'运行的,则输出将为:

#define PHANTASMAGORIA "ghostly"
Run Code Online (Sandbox Code Playgroud)

如果命令是在没有选项的情况下运行的,则输出将与输入相同.

这是一个简单的例子 - 我希望代码也可以处理更复杂的情况.

用现实世界但仍然简单的例子来说明:

#ifdef USE_VOID
#ifdef PLATFORM1
#define VOID void
#else
#undef VOID
typedef void    VOID;
#endif /* PLATFORM1 */
typedef void *  VOIDPTR;
#else
typedef mint     VOID;
typedef char *  VOIDPTR;
#endif /* USE_VOID */
Run Code Online (Sandbox Code Playgroud)

我想运行命令-DUSE_VOID -UPLATFORM1并获取输出:

#undef VOID
typedef void    VOID;
typedef void *  VOIDPTR;
Run Code Online (Sandbox Code Playgroud)

另一个例子:

#ifndef DOUBLEPAD
#if …
Run Code Online (Sandbox Code Playgroud)

c c++ preprocessor

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

如何为自己的模板使用主题预处理器功能?

我有几个节点,CCK字段和视图主题的.tpl.php文件.这些模板文件中有很多逻辑可以移动,剥离链接,创建新链接等等.我知道这是糟糕的开发而不是"Drupal Way".

如果我理解正确,"Drupal Way"是在template.php文件中使用预处理器函数来操作变量并添加新变量.关于这个问题:

  • 是否有为特定主题创建预处理器函数的命名约定?例如,如果我调用了CCK字段模板content-field-field_transmission_make_model.tpl,我该如何命名预处理器函数?
  • 我可以将模板预处理器函数用于节点模板,CCK字段模板和视图模板吗?他们有不同的修改模板变量或添加新变量的方法吗?

preprocessor drupal drupal-6 drupal-theming

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

将预处理器宏添加到xcode 6中的目标

可能这很简单,但我找不到为Xcode 6中的目标定义预处理器宏的方法.

macros xcode preprocessor target

36
推荐指数
2
解决办法
6万
查看次数