Module Name:    src
Committed By:   christos
Date:           Sun Mar 28 14:28:56 UTC 2021

Modified Files:
        src/share/misc: style

Log Message:
Clarify and explain the rationale for parentheses in sizeof and return as
discussed.


To generate a diff of this commit:
cvs rdiff -u -r1.61 -r1.62 src/share/misc/style

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/misc/style
diff -u src/share/misc/style:1.61 src/share/misc/style:1.62
--- src/share/misc/style:1.61	Sun Mar 28 10:16:16 2021
+++ src/share/misc/style	Sun Mar 28 10:28:56 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: style,v 1.61 2021/03/28 14:16:16 christos Exp $ */
+/* $NetBSD: style,v 1.62 2021/03/28 14:28:56 christos Exp $ */
 
 /*
  * The revision control tag appears first, with a blank line after it.
@@ -30,7 +30,7 @@
 #include <sys/cdefs.h>
 __COPYRIGHT("@(#) Copyright (c) 2008\
  The NetBSD Foundation, inc. All rights reserved.");
-__RCSID("$NetBSD: style,v 1.61 2021/03/28 14:16:16 christos Exp $");
+__RCSID("$NetBSD: style,v 1.62 2021/03/28 14:28:56 christos Exp $");
 
 /*
  * VERY important single-line comments look like this.
@@ -351,10 +351,26 @@ function(int a1, int a2, float fl, int a
 	char fourteen, fifteen, sixteen;
 
 	/*
-	 * Casts and sizeof's are not followed by a space.  NULL is any
-	 * pointer type, and doesn't need to be cast, so use NULL instead
-	 * of (struct foo *)0 or (struct foo *)NULL.  Also, test pointers
-	 * against NULL.  I.e. use:
+	 * Casts and sizeof's are not followed by a space.
+	 *
+	 * We parenthesize sizeof expressions to clarify their precedence:
+	 *
+	 * 	sizeof(e) + 4
+	 * not:
+	 *	sizeof e + 4
+	 *
+	 * We don't put a space before the parenthesis so that it looks like
+	 * a function call. We always parenthesize the sizeof expression for
+	 * consistency.
+	 *
+	 * On the other hand, we don't parenthesize the return statement
+	 * because there is never a precedence ambiguity situation (it is
+	 * a single statement).
+	 *
+	 * NULL is any pointer type, and doesn't need to be cast, so use
+	 * NULL instead of (struct foo *)0 or (struct foo *)NULL.  Also,
+	 * test pointers against NULL because it indicates the type of the
+	 * expression to the user. I.e. use:
 	 *
 	 *	(p = f()) == NULL
 	 * not:

Reply via email to