问题标签 [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.

0 投票
14 回答
35140 浏览

c++ - 如何创建一个只接受变量参数列表的调试函数?像 printf()

我想使用与printf. 但是可以在优化构建期间由预处理器删除。

例如:

我查看了可变参数宏,但并非在所有平台上都可用。gcc支持他们,msvc不支持。

0 投票
31 回答
745667 浏览

c++ - #include 和有什么区别和#include“文件名”?

在 C 和 C++ 编程语言中,在语句中使用尖括号和使用引号有什么区别include,如下所示?

  1. #include <filename>
  2. #include "filename"
0 投票
5 回答
1189 浏览

objective-c - 什么是“空定义的宏”?

我正在学习objective-C和Cocoa。在我正在研究的 Apple 教程中,有一个旁注说:

IBOutlet是一个空定义的宏,C 预处理器在编译时将其删除。

我很好奇 - 什么是空定义的宏?

0 投票
13 回答
9342 浏览

c# - C# 预处理器

虽然 C# 规范确实包含预处理器和基本指令(#define、#if 等),但该语言没有像 C/C++ 等语言中那样灵活的预处理器。我相信缺少这种灵活的预处理器是 Anders Hejlsberg 做出的设计决定(尽管很遗憾,我现在找不到相关参考)。从经验来看,这当然是一个不错的决定,因为当我做很多 C/C++ 时,创建了一些非常糟糕的不可维护的宏。

也就是说,在许多情况下,我可以找到一个稍微灵活的预处理器有用。一些简单的预处理器指令可以改进如下代码:

编写一个预处理器来处理这种极其简单的情况是个好主意吗?Steve McConnell 在Code Complete (p208) 中写道:

编写你自己的预处理器 如果一种语言不包含预处理器,那么编写一个相当容易......

我被撕裂了。将如此灵活的预处理器排除在 C# 之外是一个设计决定。但是,我非常尊重的一位作者提到,在某些情况下可能还可以。

我应该构建一个 C# 预处理器吗?有没有可以做我想做的简单事情的?

0 投票
4 回答
275 浏览

c - 在 C 编辑器中自动定义...为什么?

Eclipse在 C 项目中创建一个新文件(.c.h文件)时,编辑器总是在文件顶部自动创建一个,如下所示:如果文件名为“myCFile.c” ,则开头#define会有一个#define像这样的文件

我也看到其他编辑器也这样做(我认为是 Codewright 和 SlikEdit)。似乎对编辑器#defines没有任何作用,因为我可以毫无问题地删除它们,而且我想不出 想使用它们的原因。有谁知道他们为什么在那里?

0 投票
9 回答
16363 浏览

c++ - 有没有办法在 Visual C++ 中编写带有变量参数列表的宏?

据我所知,在 gcc 中,您可以编写如下内容:

有没有办法在 VC++ 中做到这一点?

0 投票
11 回答
106364 浏览

c++ - “文件末尾没有换行符”编译器警告

在某些 C++ 编译器中出现以下警告的原因是什么?

文件末尾没有换行符

为什么我应该在源/头文件的末尾有一个空行?

0 投票
4 回答
245 浏览

c# - 我应该如何为不同版本的 .NET 编写具有独特部分的代码

我的源代码需要同时支持 .NET 版本 1.1 和 2.0 ...我如何测试不同版本以及处理这种情况的最佳方法是什么。

我想知道我是否应该在不同的类、方法等中内联两段代码。你怎么看?

0 投票
16 回答
3911 浏览

c++ - 这个宏可以转换成函数吗?

在重构代码并摆脱所有那些我们现在被教导讨厌的#defines 时,我发现了这种用于计算结构中元素数量的美感:

它非常有用,但它可以转换为内联函数或模板吗?

好的,ARRAYSIZE 会是一个更好的名字,但这是遗留代码(不知道它来自哪里,它至少有 15 年的历史)所以我按“原样”粘贴它。

0 投票
38 回答
96871 浏览

c++ - C++ 宏什么时候有用?

C预处理器有理由被 C++ 社区恐惧和回避。内联函数、常量和模板通常是比#define.

以下宏:

绝不优于安全类型:

但是宏确实有它们的位置,请列出您发现的宏的用途,如果没有预处理器就无法做到。

请将每个用例放在一个单独的答案中,以便对其进行投票,并且如果您知道如何在没有预处理者的情况下获得其中一个答案,请在该答案的评论中指出如何。