|
1
16
此外,我想说的是,你建议的宏都是非常糟糕的想法,因为它们向读者隐藏了正在发生的事情。它们的唯一理由似乎是为您节省了很少的打字量。通常,只有在没有合理的替代方案时才应该使用宏。在这种情况下,有一种方法——只需编写代码。 |
|
|
2
6
可以 通过转义换行符来添加空格
但正如其他人所说,这并不是一个很好的方法。 最好是查看编辑器宏,以便键入快捷方式并让编辑器展开它。 |
|
|
3
4
你走错了路。 不要 试着找一些好的C代码来阅读——好的C代码不使用这些东西,有一个很好的理由。 |
|
|
4
3
作为一个警告性的例子,请查看 Steve Bourne's original sources for the Bourne shell ,他使用宏以一种洋泾浜-阿尔戈尔风格编写代码。 |
|
|
5
1
你 这样做,但是这种“个人语言”在C世界中并不普遍使用,特别是如果您希望将来有人阅读您的代码。
如果你这样做只是为了你自己,那么请放心
|
|
|
6
1
不必要地使用C宏会让您陷入痛苦的世界,特别是当您试图使用它来扩展代码时。C宏有一些用途,但不是这样。 here . |
|
|
7
0
总的来说,我非常同意其他受访者的看法,他们告诉您不要纯粹为了保存键入而定义自己的宏。这种混淆不值得。此外,您所建议的特定宏也是令人发指的。然而,在Stroustrup的第1版中,他做了一些我比较喜欢的事情(有时): #define Kase break; case |
|
|
8
0
我已经习惯了Python elif构造,因此我经常定义以下内容:
不是吗 为了减少键入,需要在保持代码宽度一致的同时保持缩进的逻辑性(我的代码宽度不会超过80个字符)。我这么说是因为对我来说。。。
对于我的宏,这将变成:
|
|
|
9
0
最好将循环变量传递给宏。 块-宏有一定的优化问题。所有编译器都不保证“块范围”变量的优化obj代码。 例如,以下代码在编译时不向gcc输出任何优化选项,为&打印两个单独的地址;我当使用-O2选项编译时,相同的代码将在两个块中打印相同的地址。
适当地命名语言结构可以使代码更具可读性。 我喜欢你的想法,如果你用下面的方式表达的话。
在这里,不管它是如何编写的,宏COLOR_ITER(其名称)意味着您正在循环查找所有可用的颜色,并对每种颜色执行“操作”。这是一个非常容易使用的宏。
正如大家所解释的,在这种情况下,预处理器不会帮助您。 您可以使用编辑器命令在键入代码时自动格式化代码。 |
|
|
Timo · 如果宏变量后跟构成有效标识符的字符,则不会展开宏变量 8 年前 |
|
|
user3623498 · 在#if中更改变量时出现问题 8 年前 |
|
|
einpoklum · 来自#cmakedefine替换的意外结果 8 年前 |
|
|
Joseph Franciscus · C中预处理器方法的别名++ 8 年前 |
|
|
stoper · 防止同一宏在多个转换单元中具有不同的定义 8 年前 |
|
|
СеÑгей · MinGW中预处理器g++的奇怪行为 8 年前 |