我的代码中有一些部分(例如在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目标构建?)
有谁知道这是怎么做的,我认为这将是一个常见的问题......
我想主题模板进行编辑或为特定内容类型添加节点.
例如,要主题所有内容类型表单,我使用该文件page-node-{add|edit}.tpl.php(取决于我需要添加或编辑的内容).
但我没有找到自定义节点类型的模板名称,例如Products.
我需要仅针对产品的主题,而不针对其他内容类型.
我试着page-node-edit-product.tpl.php和page-node-product-edit.tpl.php,但没有运气.
这是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) 我在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)
有类似的东西吗?
我有一个配置,我想通过环境变量动态控制预处理器定义的值.
这可能吗?如果是如何在预处理器定义表中设置我想根据环境变量设置值?
使用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++中有条件包含的预处理器指令一样.
同样,如何import在QML中进行条件化?
if x
import ABC 1.0
else
import PQR 2.0
Run Code Online (Sandbox Code Playgroud) 我加入TEST=1的Preprocessor Macros项目目标的部分Build Settings,每当我在代码中使用它,预处理器认为它没有定义.
例如,拥有:
#if TEST
// a
#else
// b
#endif
Run Code Online (Sandbox Code Playgroud)
有这种行为:
// b// b这是因为预处理器无法找到TEST(即使它被定义为1,如我之前所述),所以它将其视为存在false.
有什么方法可以解决这些问题吗?
编辑:
我的用例与多个项目目标有关.因此,假设初始目标已命名First,其中TEST预处理器宏已定义为value 1.
如果我创建了一个名为另一个项目目标Second未使用指定的预处理器宏和想添加一些代码,它只有当TEST是0(false没有定义/),我把它放在#else块(// b).
知道语法着色和自动完成适用// b,看起来它可以正常工作,但如果我将当前目标更改为First一个(双关语)甚至构建它,它仍然按照Second选择的方式工作.
所有,
我正在尝试使用Keras对两个类进行图像分类.对于一个班级,我的图像数量非常有限,比如500.对于另一个班级,我的图像数量几乎无穷无尽.所以,如果我想使用keras图像预处理,该怎么做?理想情况下,我需要这样的东西.对于第一类,我提供500个图像并使用ImageDataGenerator来获取更多图像.对于第二类,每次我从1000000图像数据集中依次提取500个图像,并且可能不需要数据增加.在查看此处的示例以及Keras文档时,我发现默认情况下,training文件夹包含每个类的相同数量的图像.所以我的问题是,是否有现成的API来做这个技巧?如果是这样,请向我指出.如果没有,是否有针对此需求的解决方法?
我想知道##这个宏定义有什么作用:
#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)
为什么要去掉逗号?