preprocessor-directive相关内容

使用GCC在C中进行函数重载-具有多个参数的函数

在上一个问题中,我找到了一种在C99中重载函数的方法,当每个函数仅接受一个参数时。有关详细信息,请参见:使用GCC在C中进行函数重载-编译器警告 现在,我已经找到了一种使用单参数函数的方法,我想知道对于带有多个参数的函数如何做到这一点。我认为这与 __ VA_ARGS __ 和使用 ... 有关,但是我似乎找不到任何东西 这将适用于带有2个参数的打印: #define prin ..
发布时间:2020-09-28 04:22:23 其他开发

#if vs #ifndef vs #ifdef

首先,我的问题是理解 #ifndef 和 #ifdef 。我还想了解 #if , #ifndef 和 #ifdef 。我知道 #if 基本上是一个if语句。例如: #include #define LINUX_GRAPHICS 011x101 int main(){ long比较= LINUX_GRAPHICS; #if Compare == LINU ..
发布时间:2020-09-27 07:32:53 C/C++开发

预处理程序指令

当我们看到 #include 时,它被称为 preprocessor指令。 #include --->指令 而且,我认为: --->预处理程序 ,“预处理器”和“指令”是什么意思? 解决方案 它可能有助于考虑“指令”之间的关系”和“指示”(即命令)。 “预处理程序指令”是指向预处理程序的指示,说明在开始后期编译之前应该对 ..
发布时间:2020-09-27 04:41:19 C/C++开发

在各种编译器中如何定义__cplusplus指令?

我的编译器将其扩展为199711L。这意味着什么?我读到__cplusplus> 199711L表示C ++ 11。 解决方案 199711L代表Year = 1997,Month = 11 (即1997年11月)-委员会批准该标准的日期,ISO的其余部分于1998年初批准。 对于2003年标准,有 对于2011年的标准,必须将其定义为201103L(再次,year = 201 ..
发布时间:2020-09-26 23:38:29 C/C++开发

是否有用于Octave和Scilab的类似于C的预处理器指令可用于相互兼容的代码?

在C/C ++语言中,可以使用宏或称为“每处理器指令"的指令来指示编译器应如何读取代码. #def,#ifdef,#ifndef,#else,#endif等简单命令使编译器能够检查操作系统,编译器和其他环境信息.我知道Octave和Scilab是解释语言,但是我想知道是否有任何方法告诉解释器在加载脚本时替换脚本的某些部分?例如,我可以编写一个基于Scilab语法//进行注释的代码,然后指示解释器将 ..

什么是双重评估,为什么应避免?

我在C ++中使用诸如此类的宏 阅读 #define max(a,b) (a > b ? a : b) 可能会导致“双重评估".有人可以给我举一个例子,说明何时发生双重评估以及为什么它不好吗? PS:令人惊讶的是,除了 Clojure (其中的一个示例)外,我在进行谷歌搜索时找不到任何详细的解释.我不明白). 解决方案 想象一下您是这样写的: #define Max(a ..
发布时间:2020-05-05 08:50:14 C/C++开发

在#define宏中转义#符号?

我无需使用任何细节,我想使用一个#define宏,该宏将扩展为#include,但是'#'符号使预处理器感到困惑(因为它认为我想引用一个参数.) 例如,我想做这样的事情: #define MACRO(name) #include "name##foo" 并按以下方式使用它: MACRO(Test) 这将扩展为: #include "Testfoo" 谦虚的#号导致预 ..
发布时间:2020-05-05 08:48:04 C/C++开发

确定设备是否为ARM64

我正在尝试对iOS 7进行调整,以便当设备是ARM64时它会运行一个版本,而当它不运行时它会运行另一个版本(因为float是32位而double是64(如果你有的话)解决方案让我知道。) 所以它就像这样 如果是ARM64 { \\\ \\\ tun double code } else { \\\\ run float code } 解决方案 您可以执行以下 ..
发布时间:2018-09-18 10:06:03 移动开发

VBA:在预处理时访问注册表

我想在一个VBA项目中有条件地编译代码,条件取决于一些注册表项。这在VBA是不可能的吗? 我知道在VBA有一些简单的预处理可能性,但我不能看到是否可能以某种方式访问​​注册表,而预处理。或者也许在编译之前检查注册表的一些其他可能性。 由于我得到一个编译错误,因为一些缺少引用(因此缺少类对象),我的目标是检查编译前的注册表。 P.s。我只想读取注册表项。 例如。如何到达deb ..
发布时间:2016-12-22 14:26:30 其他开发

#if inside #define?

我正在使用一些旧代码,通过#defines生成大量代码。现在我知道在 #define 内不可能有 #ifdef ,但是 #if 可能?我想为一个特定类型添加一些专门化。 (不进行重大更改,如使用模板)。以下示例给出了我们的隐藏错误,因此这不是这样的: #define MK_GET(type)\ 类型get_ ##类型(int index)\ {\ #if type == doub ..
发布时间:2016-10-27 02:26:04 C/C++开发

#line是什么意思?

以下行是做什么的? #line 25“CSSGrammar.y” 扩展名是什么? 解决方案 p>根据标准: §16.4.3: 预处理指令形式 #line digit-sequence new-line pre> 使得实现表现得好像以下源行序列以源行 开始,其具有由数字序列指定的行号解释为十进制整数)。如果数字 序列指 ..
发布时间:2016-10-26 22:37:17 C/C++开发

Visual Studio:如何使用平台工具集作为预处理指令?

我有两个平台工具集:v110和v110_xp为我的项目,并根据所选择的平台,我想包括/排除部分代码编译。 _MSC_FULL_VER 和 $(PlatformToolsetVersion)这两个平台工具集的值相同。或者,我尝试使用 $(PlatformToolset)如下: _MSC_PLATFORM_TOOLSET = $(PlatformToolset) 但问题是 ..