preprocessor-directive相关内容

Visual C++2010中的预处理器指令缩进

我经常发现自己在希望像其余代码一样缩进预处理器指令的情况下(例如#if缩进,如if)。它seems legal,它是common sense that it's sometimes a good thing,但Visual不会让它变得容易。 有没有办法防止每次我无意中按#时,Visual C++2010编辑器都会将代码粘在左边?并且不使用自动缩进(CTRL+K、CTRL+F)中断预处理器指令的缩 ..

Visual Studio 忽略 #if DEBUG/RELEASE 范围内的代码,并且不检查错误或自动完成

我一直在编写 #if DEBUG、#else、#endif 代码片段,我注意到 Visual Studio 没有'不要让我使用自动完成来完成部分键入的成员名称,并且它不会检查灰色的非活动代码是否存在错误.我发现让它再次受到关注的唯一方法是将构建模式从调试切换到发布.但这很不方便,感觉有更好的方法. 示例: #if 调试扔;#别的throw new exc//我想在这里使用自动完成但不能,因 ..

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

我是在 C++ 中使用宏来阅读的,比如 #define max(a,b) (a > b ? a : b) 可能导致“双重评估".谁能给我一个例子,说明何时发生双重评估以及为什么它不好? PS:令人惊讶的是,除了 Clojure 中的示例(其中我不明白). 解决方案 想象一下你是这样写的: #define Max(a,b) (a ..
发布时间:2022-01-11 19:38:15 C/C++开发

在#define 宏中转义# 符号?

在不涉及血淋淋的细节的情况下,我想使用一个 #define 宏,该宏将扩展为一个 #include 但“#"符号会混淆预处理器(如它认为我想引用一个论点.) 例如,我想做这样的事情: #define MACRO(name) #include "name##foo" 然后这样使用它: 宏(测试) 这将扩展为: #include "Testfoo" 不起眼的 # 符号导致预处理器出错 ..
发布时间:2022-01-11 19:19:06 C/C++开发

C++ 编译时宏来检测 Windows 操作系统

是否存在任何 C++ 编译时宏来检测代码正在哪个 Windows 操作系统上编译.我基本上只想在Win7上支持某些功能.所以我有兴趣做这样的事情 #if = 赢7//这个函数会做一些只在 Win7 版本上有效的事情.布尔我的函数{//在这里做点什么}#别的//这个函数通常会返回 false,因为它在 win7 以下的操作系统上不支持布尔我的函数{返回假;}#万一 还有其他更 ..
发布时间:2022-01-11 16:26:13 C/C++开发

使用构建配置在 Visual Studio 中创建项目的多个版本

我需要使用配置创建多个版本的项目,就像我们使用 #define、#if、#endif 一样. 使用这些预处理器指令的缺点是我需要在项目的几乎每个文件中定义符号,但我想通过我的构建配置来处理这个事情. 我什至不确定构建配置是否会帮助我做到这一点. 我想要的是,如果我创建一个名为“Development"的配置而另一个名为“QA"的配置,我的代码将如下所示: if #Develop ..

预处理器:获取操作系统 .Net Core

我正在编写一个我希望在 Windows 和 Windows 上使用的类Linux. 此类中的方法之一是访问 Windows 注册表 我希望实现的是在使用 Linux 机器时以某种方式禁用此特定方法. 首先,我做了一些研究,看看是否有适合 一个 href="https://en.wikipedia.org/wiki/.NET_Core" rel="nofollow norefer ..
发布时间:2021-11-24 18:24:06 C#/.NET

判断设备是否为ARM64

我正在尝试对 iOS 7 进行调整,以便当设备是 ARM64 时它运行一个版本,当它不是时运行另一个版本(因为 float 用于 32 位,double 用于 64(如果你有解决方案让我知道.) 应该是这样的 if ARM64 {\\运行双重代码}别的 {\\运行浮动代码} 解决方案 您将执行以下操作 #if __LP64__\\您在 64 位上运行#别的\\您在 32 位上运行#万 ..
发布时间:2021-11-17 22:44:38 移动开发

预处理器:获取操作系统 .Net Core

我正在编写一个我希望在 Windows 和 Windows 上使用的类Linux. 此类中的方法之一是访问 Windows 注册表 我希望实现的是在使用 Linux 机器时以某种方式禁用此特定方法. 首先,我做了一些研究,看看是否有适合 一个 href="https://en.wikipedia.org/wiki/.NET_Core" rel="nofollow norefer ..
发布时间:2021-10-26 16:03:02 C#/.NET

XCode 语法在预处理器 #if #else 的两种情况下都突出显示

我的应用程序使用了一个不会在模拟器上构建和/或运行的库,所以我通过用预处理器指令包围引用来有效地剔除对该库的引用: #if !(TARGET_IPHONE_SIMULATOR)//做真正的实现#别的//做一个虚拟的实现来测试 XCode 会自动检查我当前的目标是什么,并评估我认为不错的 #if/#else.问题是,它会关闭语法高亮、自动完成等任何不会被编译的条件.(例如,如果我当前的目标是模拟 ..
发布时间:2021-09-30 19:36:13 移动开发

如何在 VC++ 中毒化标识符?

函数中毒是 C++ 中非常有用的技术. 一般来说,它指的是使功能无法使用,例如如果您想禁止在程序中使用动态分配,您可以“毒化" malloc 函数使其无法使用.'中毒'一个标识符意味着在'中毒'之后对标识符的任何引用都是一个硬编译器错误 例如(查看现场演示这里) #include #include #pragma GCC 毒药 mallocint main(){int* p=(int ..
发布时间:2021-09-18 19:01:25 C/C++开发

检查是否定义了 uint64_t

uint64_t 类型不保证在 32 位平台上定义,代码类似 int main() {uint64_t i = 0;} 可能导致不完整类型类型的编译错误. 是否有预处理器指令来检查 uint64_t 是否存在?有没有其他方法可以检查类型是否已定义? 解决方案 我认为合理的做法是检查是否定义了关联的宏 UINT64_MAX,例如 #include /* 不要忘记包含 */...# ..
发布时间:2021-09-11 20:11:17 C/C++开发

预处理器指令反射注入

如何注入C# 预处理器指令通过反射到接口? 示例: 我想将 #if SILVERLIGHT 注入任何 WCF 服务合同接口. 解决方案 简短的回答:你不能. 稍微长一点的答案:你的问题一开始就没有意义. 预处理器指令在编译之前进行处理.该处理的结果是新的、修改过的源代码.然后编译该源代码. 例如,如果编译时没有定义SILVERLIGHT符号,那么#if SiLVERL ..
发布时间:2021-07-06 18:54:21 C#/.NET

Swift 语言中的 #ifdef 替换

在 C/C++/Objective C 中,您可以使用编译器预处理器定义宏.此外,您可以使用编译器预处理器包含/排除部分代码. #ifdef DEBUG//仅调试代码#万一 Swift 中是否有类似的解决方案? 解决方案 是的,你可以做到. 在 Swift 中,您仍然可以使用“#if/#else/#endif"预处理器宏(尽管受到更多限制),如 Apple 文档.举个例子: # ..
发布时间:2021-06-21 18:30:18 移动开发

如果存在表,如何有条件地编译?

我正在使用 Progress-4GL、11.6 版、appBuilder 和过程编辑器. 我刚刚创建了一个名为“table_X"的表,我在代码中使用它,例如: FIND table_X ... 不过,我的程序是通用的,但是表是定制的(有些客户有这个表,有些没有). 所以,我想添加一个“预处理器",例如: &IFDEF table_X&THEN FIND table_X ...&E ..
发布时间:2021-06-12 20:02:09 其他开发