标签: preprocessor

如何从命令行调用Visual Studio预处理器?

我想使用此处描述的预处理器实现解决方案:

在C#代码中重用.h文件中的define语句

如果您能指出我在MSDN上的文档,可以获得奖励积分.我找不到它们......

preprocessor visual-studio

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

内置预处理器令牌来检测iPhone平台

是否有一个预处理器令牌可用于在构建时检测任何iPhone设备或模拟器?我目前正在使用:

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
    // This is an iPhone build
#endif
Run Code Online (Sandbox Code Playgroud)

这是推荐的方法还是有更好的方法?我更喜欢内置宏,即由编译器定义,而不是我必须包含的SDK头文件.

我现在并不关心区分iPhone OS版本,但是如果有一个Apple文档页面详细说明了所有相关的宏,当它们被定义和未定义时,我会很感激它的链接,因为我的搜索已经来了到目前为止.

谢谢!

iphone preprocessor

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

是否有可能在着色器代码中判断OpenGL版本是否为OpenGL ES?

是否有任何方法可以在着色器的源代码中告知是否正在为OpenGL ES编译着色器?我希望能够使用#version预处理器指令将版本定义为OpenGL ES为100(因此着色器为OpenGL ES 2.0编译),但OpenGL 2.1版本为110).

最好的方法是将#version作为一个单独的字符串放在应用程序级别,或者有没有办法在着色器中执行此操作?

另一个有用的,相关的事情就是说 #if version == 100编译这段代码,else编译这段代码.这可能在GLSL中吗?

谢谢.

preprocessor opengl-es version glsl opengl-es-2.0

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

从 Visual Studio 2010 中的预构建事件命令行访问 %(PreprocessorDefinitions)

I\xe2\x80\x99m 在 Visual Studio 2010 构建过程中遇到一些困难。简而言之,我想通过预构建事件命令行将当前构建配置设置的预处理器定义传递到批处理文件中。

\n\n

预处理器定义位于 C/C++ > 预处理器 > 预处理器定义下的项目属性中。在该属性表中,我确实看到宏的名称为 %(PreprocessorDefinitions),但是该宏不会\xe2\x80\x99t 显示在“构建事件”>“预构建事件”的宏列表中。

\n\n

有没有办法从“构建事件”>“预构建事件”>“命令行”中访问 %(PreprocessorDefinitions)?

\n\n

谢谢!

\n\n

额外细节:

\n\n

让我更具体地说\xe2\x80\xa6 I\xe2\x80\x99m 使用稍作修改的 vs-android 版本,以便从 Visual Studio 中构建 Android 应用程序。我过去编辑过 vs-android 源代码以添加构建过程所需的特定元素。我\xe2\x80\x99注意到PreprocessorDefinitions位于名为\xe2\x80\x9cClCompile\xe2\x80\x9d的ItemDefinitionGroup中。我可以\xe2\x80\x99t 似乎可以使用 %(ClCompile.PreprocessorDefinitions) 从 .props 或 .xml 构建文件中访问定义。

\n\n

有没有办法告诉 Visual Studio 让 %(ClCompile.PreprocessorDefinitions) 成为环境的一部分,因此它可能会显示为 $(PreprocessorDefinitions)?如果是这样,我一直无法找出如何。

\n

macros preprocessor visual-studio-2010

6
推荐指数
0
解决办法
3087
查看次数

AFX_DESIGN_TIME的目的是什么?它在何处定义?

我在VS2015 MFC项目中找到了以下代码.

#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_DIALOG1 };
#endif
Run Code Online (Sandbox Code Playgroud)

我想了解这个预处理器的目的.谷歌没有给我任何足够的东西.如果你能对它有所了解,我将不胜感激.

mfc preprocessor dialog

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

在现代 CMake 中定义预处理器

我目前正在学习 CMake,不想养成坏习惯,因为在 CMake 中总是有两种方法可以做某事(从我所看到的旧方法和现代方法)

阅读了有关 CMake 中预处理器的一些文档并检查了这篇文章后: 通过 cmake 定义预处理器宏

我得出的结论是,我可以将预处理器定义为:

  • add_compile_definitions(FOO)
  • target_compile_definitions(myTarget PRIVATE FOO)
  • add_definitions(-DFOO)

经过一些测试后,他们实际上一切都按预期工作并定义FOO

但现在我的问题是我应该使用的最“现代”的方式是什么以及每个函数之间的真正区别是什么,我注意到的唯一区别是如果我使用它然后在父目标中target_compile_definitions(myTarget PUBLIC FOO)定义。FOO

c++ preprocessor cmake

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

预处理器“无效的整数常量表达式”将int与double进行比较

在代码的某个地方,我有预处理程序定义

#define ZOOM_FACTOR 1
Run Code Online (Sandbox Code Playgroud)

在另一个地方,我有

#ifdef ZOOM_FACTOR
#if (ZOOM_FACTOR == 1)
#define FONT_SIZE 8
#else
#define FONT_SIZE 12
#endif
#else
#define FONT_SIZE 8
#endif
Run Code Online (Sandbox Code Playgroud)

问题是当我将ZOOM_FACTORvalue 更改为floating pointvalue时,例如1.5,我遇到了编译错误C1017: invalid integer constant expression

有谁知道为什么我收到这个错误,有没有什么办法之间做出比较integerfloating point number预处理指令内?

c++ preprocessor

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

Tensorflow 2.0 100% 使用所有 CPU 核心

我的 Tensorflow 模型大量使用数据预处理,这些数据预处理应在 CPU 上完成,以使 GPU 开放用于训练。

top - 09:57:54 up 16:23,  1 user,  load average: 3,67, 1,57, 0,67
Tasks: 400 total,   1 running, 399 sleeping,   0 stopped,   0 zombie
%Cpu(s): 19,1 us,  2,8 sy,  0,0 ni, 78,1 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
MiB Mem :  32049,7 total,    314,6 free,   5162,9 used,  26572,2 buff/cache
MiB Swap:   6779,0 total,   6556,0 free,    223,0 used.  25716,1 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ …
Run Code Online (Sandbox Code Playgroud)

cpu preprocessor tensorflow

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

为什么#pragma 被视为预处理器指令?

我知道它以 开头#,并且遵循预处理指令格式。但是预处理器真的关心它吗?的#pragma pack#pragma once和其他所有的指令,我知道,都是由编译器进行。这个问题中的评论甚至指出#pragma指令在预处理阶段仍然存在。所以我的问题是:

  1. 既然#pragma是编译器,为什么它被认为是一个预处理指令?仅仅是因为它以 开头#吗?
  2. 预处理器真的对#pragma?

c preprocessor pragma

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

C/C++ 中的单行 #ifdef

考虑以下简单的 C/C++ 示例:

#define FOO
...
#ifdef FOO
  bar++;
#endif
Run Code Online (Sandbox Code Playgroud)

好的,现在我想将该条件(以及任何其他类似的)条件放入一行中,以提高代码可读性(该代码有数十个单行语句,每个语句都需要有条件,每个语句取决于不同的定义)。使用时,看起来像这样:

#define FOO
...
MY_IFDEF(FOO,bar++;) //Single-line conditional
Run Code Online (Sandbox Code Playgroud)

目标是拥有一个可重用的宏,它可以采用任意标识符,并且如果该标识符之前已被 #define-d 编译该语句,并在一行中完成所有操作。

有任何想法吗?

UPDATE0:代码必须针对 C 和 C++ 进行编译

c preprocessor c-preprocessor

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