|
|
1
67
来自C常见问题解答。 http://blogs.msdn.com/CSharpFAQ/archive/2004/03/09/86979.aspx
|
|
|
2
35
这样你就可以一次又一次地在上面打字。
显然,C和.NET的设计者从未真正使用他们创建的任何库或框架。如果他们这样做,他们就会意识到,某种形式的卫生句法宏观体系是绝对有序的。 不要让C和C++的跛脚宏的缺点使你对编译时间解析代码的能力产生影响。编译时解析和代码生成允许您更有效地表达代码的含义和意图,而无需拼写出源代码的所有琐碎细节。例如,如果您可以将上面的内容替换为:
嘘有他们,OcamML(至少Meta ML)有他们,C和C++有他们(以一种恶劣的形式,但总比没有他们好)。C没有。 |
|
|
3
27
在我的经验中,C++风格的宏增加了大量的复杂性,没有相应的好处。我当然没有在C或Java中漏掉它们。(在C语言中,我很少使用预处理器符号,但偶尔我很高兴它们在那里。) 现在很多人都要求 Lisp-style macros 这一点我几乎不知道,但肯定比C++风格更悦耳。 你特别想做什么 做 用宏?我们也许能帮助你用更习惯的方式思考… |
|
|
4
9
C是针对更广泛的受众(或在其他术语,消费者基础)比C +,C或ASM。实现这一目标的唯一方法是让程序员获得相当不熟练的技能。因此,所有强大但危险的工具都被拿走了。即宏、多重继承、对象生存期控制或类型无关编程。 同样地,火柴、刀子和钉枪是有用和必要的,但它们必须放在儿童够不到的地方。(可悲的是,纵火、谋杀、内存泄漏和无法读取的代码仍然会发生)。 在指责我不思考“C”之前,你写过多少次:
对于宏,每次这16行看起来都是这样:
|
|
|
5
4
使用C/C++中的宏定义常量,生成小的内联函数,以及直接与编译代码有关的各种事物(α-IFDEF)。 在C中,您有强类型常量,它是一个足够智能的编译器,可以在必要时内联函数,并且知道如何以正确的方式编译内容(没有预编译头的废话)。 但是如果你真的想的话,没有特别的理由不能首先通过C预处理器运行你的CS文件。 |
|
|
6
2
|
|
|
7
1
宏在中使用过度
|
|
|
8
1
本文比较了Perl和Lisp宏,但这一点仍然是相同的:文本级宏(PerL/C++)与源级宏(LISP)相比引起了大量的问题。 http://lists.warhead.org.uk/pipermail/iwe/2005-July/000130.html 比我更勇敢的人在C语言中使用了他们自己的宏系统。# http://www.codeproject.com/KB/recipes/prepro.aspx |
|
|
9
0
宏是当今大多数程序员比编译器更聪明的工具。在C/C++中,仍然有一些情况是这样的。 现在,大多数程序员都不如C编译器/运行时聪明。 |
|
|
10
0
任何同意宏是坏的想法的人都应该阅读这本书,“双手合十”。 http://en.wikipedia.org/wiki/With_Folded_Hands 它讲述了一个故事,讲的是我们如何阻止人们做愚蠢的事情,一直到阻止他们做非常明智的事情。 虽然我喜欢C,但我真的很讨厌它助长了实际软件工程师的愚蠢。所以,是的,把宏留给专业人员。当我们这样做的时候,把变量的命名也留给专业人员。这会导致一些真正无法读取的代码。要遵循“代码必须最终可读”的完整语句,所有变量都应命名为a-z,后跟a-z(或其他任意结构,如仅名词)。因为一些不熟练的人可能会将他们的变量命名为“someThingsEFult,但由于某些用户使用了模块化的东西,所以文件不允许这样做”。 |
|
|
11
-1
您可以对宏(如propertychanged)执行某些操作,方法如下 this 如果这比宏更好? 这是一个你必须决定的问题:) |
|
TSG · 创建定义编译器变量并调用方法的C++宏 1 年前 |
|
Edward Falk · 你能比较C预处理器中的两个常量指针吗? 1 年前 |
|
|
ma1169 · 宏:不应忽略void值 1 年前 |
|
|
Bhargav Patil · 运算符的大小并尝试打印数组 1 年前 |
|
|
David Robie · VIM:寄存器中填充字符断点宏的有向图 1 年前 |
|
|
Sofia Zaiafarova · 定义宏并使用数据类型查找绝对值 1 年前 |
|
|
Daniel Muñoz · C[重复]中类宏函数的语法 2 年前 |
|
|
SupAl · 避免在没有宏的情况下构建对象 2 年前 |