标签: preprocessor

Xcode:条件DEBUG/TEST代码的预处理器宏

我的代码中有一些部分(例如在AppDelegate.m中)不应该为单元测试编译,比如

#ifndef CONFIGURATION_TESTS
// Code that should not be compiled in the Unit Tests
#endif
Run Code Online (Sandbox Code Playgroud)

在创建新项目时选择"添加单元测试"时,Xcode会设置目标.在项目文件中,我已将标志CONFIGURATION_TESTS添加到MyAppTests Built-Target的预处理器宏中,但未添加到MyApp目标.

这是我发现的许多帖子中的建议方式.

但这不起作用,因为(我猜)MyAppTests目标将MyApp目标作为依赖项,并且因为AppDelegate.m被添加到MyApp目标,它将使用MyApp构建设置进行编译,因此,未定义CONFIGURATION_TESTS .

在单元测试文件中,宏被定义并按预期运行(因为测试文件只由MyAppTests目标构建?)

有谁知道这是怎么做的,我认为这将是一个常见的问题......

debugging macros xcode preprocessor unit-testing

11
推荐指数
1
解决办法
3700
查看次数

如何设置模板主题以进行编辑或为特定内容类型添加节点?

我想主题模板进行编辑或为特定内容类型添加节点.
例如,要主题所有内容类型表单,我使用该文件page-node-{add|edit}.tpl.php(取决于我需要添加或编辑的内容).

但我没有找到自定义节点类型的模板名称,例如Products.

我需要仅针对产品的主题,而不针对其他内容类型.

我试着page-node-edit-product.tpl.phppage-node-product-edit.tpl.php,但没有运气.

php templates preprocessor drupal drupal-6

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

这行C/C++预处理器意味着什么?

这是WinNT.h(BUILD版本:0091)的第519行

#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
Run Code Online (Sandbox Code Playgroud)

为什么我们需要一个指向结构的指针,该结构具有一个名为unused?的单个int成员?

我们是否需要使用像这样的一行代码?

HINSTANCE hInstance = new HINSTANCE__;
Run Code Online (Sandbox Code Playgroud)

整体声明具有相同结构的不同数据类型对我来说没有意义.这背后有什么想法?

DECLARE_HANDLE(HRGN);
DECLARE_HANDLE(HRSRC);
DECLARE_HANDLE(HSPRITE);
DECLARE_HANDLE(HLSURF);
DECLARE_HANDLE(HSTR);
DECLARE_HANDLE(HTASK);
DECLARE_HANDLE(HWINSTA);
DECLARE_HANDLE(HKL);
Run Code Online (Sandbox Code Playgroud)

winapi preprocessor visual-c++

10
推荐指数
2
解决办法
5977
查看次数

"设计模式"预处理器指令

我在Designer中显示组件时遇到问题.

我发现了设计师不喜欢的"坏"代码.

现在,问题是我不能仅仅使用预处理器指令来"评论"它的设计时间.

现在,我尝试了(对于VB.NET)以下内容

#If Not Debug Then
Private Sub myWpfComponent_ItsEvent(sender, args) Handles myWpfComponent.ItsEvent
...
#End If 
Run Code Online (Sandbox Code Playgroud)

这...工作,现在它在设计师中显示没有问题.

现在的问题是我恐怕无法正确调试这个组件.

所以,我正在寻找一种解决方法

#If Not DESIGN_TIME Then
#End If 
Run Code Online (Sandbox Code Playgroud)

有类似的东西吗?

.net wpf preprocessor visual-studio-2010 visual-studio

10
推荐指数
1
解决办法
4967
查看次数

Xcode预处理器依赖于环境变量

我有一个配置,我想通过环境变量动态控制预处理器定义的值.

这可能吗?如果是如何在预处理器定义表中设置我想根据环境变量设置值?

xcode preprocessor environment-variables xcodebuild

10
推荐指数
1
解决办法
3252
查看次数

生成编译器定义的预处理器宏列表

使用gcc和gfortran我可以生成编译器定义的预处理器宏列表(编辑以反映ouah的答案)

gcc -E -dM - < /dev/null
Run Code Online (Sandbox Code Playgroud)

gfortran -cpp -E -dM /dev/null
Run Code Online (Sandbox Code Playgroud)

分别(至少在Linux上).

我如何对英特尔编译器icc和ifort做同样的事情?我知道对于ifort这些宏是在这里定义的,但我希望能够自己生成这个列表,因为使用的确切宏及其值将取决于所使用的编译器选项.我也知道这个预先设计的项目.

c preprocessor fortran icc intel-fortran

10
推荐指数
2
解决办法
2774
查看次数

如何在QML中编写条件导入语句?

就像我们在C++中有条件包含的预处理器指令一样.

同样,如何import在QML中进行条件化?

if x  
    import ABC 1.0  
else  
    import PQR 2.0  
Run Code Online (Sandbox Code Playgroud)

linux qt preprocessor qml qtquick2

10
推荐指数
2
解决办法
1826
查看次数

目标预处理器宏在Xcode中被预处理器忽略

我加入TEST=1Preprocessor Macros项目目标的部分Build Settings,每当我在代码中使用它,预处理器认为它没有定义.

  1. alt +点击它会显示一个问号
  2. 语法着色不起作用
  3. 语法自动完成功能不起作用

例如,拥有:

#if TEST

// a

#else

// b

#endif
Run Code Online (Sandbox Code Playgroud)

有这种行为:

  1. 语法着色仅适用于 // b
  2. 语法自动完成仅适用于 // b

这是因为预处理器无法找到TEST(即使它被定义为1,如我之前所述),所以它将其视为存在false.

有什么方法可以解决这些问题吗?

编辑:

我的用例与多个项目目标有关.因此,假设初始目标已命名First,其中TEST预处理器宏已定义为value 1.

如果我创建了一个名为另一个项目目标Second未使用指定的预处理器宏和想添加一些代码,它只有当TEST0(false没有定义/),我把它放在#else块(// b).

知道语法着色和自动完成适用// b,看起来它可以正常工作,但如果我将当前目标更改为First一个(双关语)甚至构建它,它仍然按照Second选择的方式工作.

xcode preprocessor preprocessor-directive

10
推荐指数
2
解决办法
4135
查看次数

keras图像预处理不平衡数据

所有,

我正在尝试使用Keras对两个类进行图像分类.对于一个班级,我的图像数量非常有限,比如500.对于另一个班级,我的图像数量几乎无穷无尽.所以,如果我想使用keras图像预处理,该怎么做?理想情况下,我需要这样的东西.对于第一类,我提供500个图像并使用ImageDataGenerator来获取更多图像.对于第二类,每次我从1000000图像数据集中依次提取500个图像,并且可能不需要数据增加.在查看此处的示例以及Keras文档时,我发现默认情况下,training文件夹包含每个类的相同数量的图像.所以我的问题是,是否有现成的API来做这个技巧?如果是这样,请向我指出.如果没有,是否有针对此需求的解决方法?

preprocessor image classification keras

10
推荐指数
1
解决办法
3289
查看次数

##__VA_ARGS__ 是什么意思?

我想知道##这个宏定义有什么作用:

#define debug(M, ...) fprintf(stderr,M "\n",##__VA_ARGS __)
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了一个答案,我想出了以下内容。

##如果没有给宏提供变量参数,将删除逗号。所以,如果宏是这样调用的

debug("message");
Run Code Online (Sandbox Code Playgroud)

没有引号,它被扩展为

fprintf(stderr,"message");
Run Code Online (Sandbox Code Playgroud)

不是

fprintf(stderr,"message",);
Run Code Online (Sandbox Code Playgroud)

为什么要去掉逗号?

c++ macros preprocessor variadic-macros

10
推荐指数
1
解决办法
9324
查看次数