问题标签 [c-preprocessor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何创建一个只接受变量参数列表的调试函数?像 printf()
我想使用与printf
. 但是可以在优化构建期间由预处理器删除。
例如:
我查看了可变参数宏,但并非在所有平台上都可用。gcc
支持他们,msvc
不支持。
c++ - #include 和有什么区别和#include“文件名”?
在 C 和 C++ 编程语言中,在语句中使用尖括号和使用引号有什么区别include
,如下所示?
#include <filename>
#include "filename"
objective-c - 什么是“空定义的宏”?
我正在学习objective-C和Cocoa。在我正在研究的 Apple 教程中,有一个旁注说:
IBOutlet
是一个空定义的宏,C 预处理器在编译时将其删除。
我很好奇 - 什么是空定义的宏?
c# - C# 预处理器
虽然 C# 规范确实包含预处理器和基本指令(#define、#if 等),但该语言没有像 C/C++ 等语言中那样灵活的预处理器。我相信缺少这种灵活的预处理器是 Anders Hejlsberg 做出的设计决定(尽管很遗憾,我现在找不到相关参考)。从经验来看,这当然是一个不错的决定,因为当我做很多 C/C++ 时,创建了一些非常糟糕的不可维护的宏。
也就是说,在许多情况下,我可以找到一个稍微灵活的预处理器有用。一些简单的预处理器指令可以改进如下代码:
编写一个预处理器来处理这种极其简单的情况是个好主意吗?Steve McConnell 在Code Complete (p208) 中写道:
编写你自己的预处理器 如果一种语言不包含预处理器,那么编写一个相当容易......
我被撕裂了。将如此灵活的预处理器排除在 C# 之外是一个设计决定。但是,我非常尊重的一位作者提到,在某些情况下可能还可以。
我应该构建一个 C# 预处理器吗?有没有可以做我想做的简单事情的?
c - 在 C 编辑器中自动定义...为什么?
当Eclipse在 C 项目中创建一个新文件(.c或.h文件)时,编辑器总是在文件顶部自动创建一个,如下所示:如果文件名为“myCFile.c” ,则开头#define
会有一个#define
像这样的文件
我也看到其他编辑器也这样做(我认为是 Codewright 和 SlikEdit)。似乎对编辑器#defines
没有任何作用,因为我可以毫无问题地删除它们,而且我想不出我 想使用它们的原因。有谁知道他们为什么在那里?
c++ - 有没有办法在 Visual C++ 中编写带有变量参数列表的宏?
据我所知,在 gcc 中,您可以编写如下内容:
有没有办法在 VC++ 中做到这一点?
c++ - “文件末尾没有换行符”编译器警告
在某些 C++ 编译器中出现以下警告的原因是什么?
文件末尾没有换行符
为什么我应该在源/头文件的末尾有一个空行?
c# - 我应该如何为不同版本的 .NET 编写具有独特部分的代码
我的源代码需要同时支持 .NET 版本 1.1 和 2.0 ...我如何测试不同版本以及处理这种情况的最佳方法是什么。
我想知道我是否应该在不同的类、方法等中内联两段代码。你怎么看?
c++ - 这个宏可以转换成函数吗?
在重构代码并摆脱所有那些我们现在被教导讨厌的#defines 时,我发现了这种用于计算结构中元素数量的美感:
它非常有用,但它可以转换为内联函数或模板吗?
好的,ARRAYSIZE 会是一个更好的名字,但这是遗留代码(不知道它来自哪里,它至少有 15 年的历史)所以我按“原样”粘贴它。
c++ - C++ 宏什么时候有用?
C预处理器有理由被 C++ 社区恐惧和回避。内联函数、常量和模板通常是比#define
.
以下宏:
绝不优于安全类型:
但是宏确实有它们的位置,请列出您发现的宏的用途,如果没有预处理器就无法做到。
请将每个用例放在一个单独的答案中,以便对其进行投票,并且如果您知道如何在没有预处理者的情况下获得其中一个答案,请在该答案的评论中指出如何。