All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Documentation/CodingStyle: Mention multi-line macros using expressions
@ 2012-07-11 17:32 Robert P. J. Day
  2012-07-11 18:14 ` Joe Perches
  0 siblings, 1 reply; 3+ messages in thread
From: Robert P. J. Day @ 2012-07-11 17:32 UTC (permalink / raw)
  To: Linux Kernel Mailing List


Since defining multi-line macros using statements and declarations in
expressions is fairly common in the kernel, add this to CodingStyle.

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>

---
diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle
index cb9258b..7eb0734 100644
--- a/Documentation/CodingStyle
+++ b/Documentation/CodingStyle
@@ -600,7 +600,8 @@ may be named in lower case.

 Generally, inline functions are preferable to macros resembling functions.

-Macros with multiple statements should be enclosed in a do - while block:
+Macros with multiple statements can be defined in one of two ways.  The
+earlier technique enclosed the macro in a do - while block, as in:

 #define macrofun(a, b, c) 			\
 	do {					\
@@ -608,6 +609,17 @@ Macros with multiple statements should be enclosed in a do - while block:
 			do_this(b, c);		\
 	} while (0)

+A newer technique is to use the GCC extension of being able to place
+statements and declarations in an expression, as with this example from
+the <linux/kernel.h> header file:
+
+#define roundup(x, y) (				\
+{						\
+        const typeof(y) __y = y;		\
+        (((x) + (__y - 1)) / __y) * __y;	\
+}						\
+)
+
 Things to avoid when using macros:

 1) macros that affect control flow:


-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-07-13 12:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-11 17:32 [PATCH] Documentation/CodingStyle: Mention multi-line macros using expressions Robert P. J. Day
2012-07-11 18:14 ` Joe Perches
2012-07-13 12:43   ` Robert P. J. Day

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.