|
From: | Paul Eggert |
Subject: | Re: Suspicious warning in W64 build |
Date: | Mon, 18 Sep 2017 10:35:13 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
Eli Zaretskii wrote:
It expands into an assignment, so it's an assignment.
UNINIT does not expand into an assignment. Sometime it expands into nothing. At other times it expands into '=' followed by an initializer. Neither is an assignment. And either way, the user of UNINIT is not supposed to care what UNINIT expands into; that's an implementation detail. From the user's point of view, UNINIT is a declarator attribute.
There are lots more syntactically-incorrect macros other than the UNINIT and the ATTRIBUTE_* ones. They include DECLARE_POINTER_ALIAS, FALLTHROUGH, INLINE, FOR_EACH_TAIL, and the list goes on and on. I agree that we should avoid such constructs if possible, but each of these constructs is useful and is unavoidably outside the usual C syntax. UNINIT is similar.
[Prev in Thread] | Current Thread | [Next in Thread] |