Path: csiph.com!xmission!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Hans-Peter Diettrich Newsgroups: comp.compilers Subject: C99 translation phases Date: Thu, 25 May 2017 13:09:58 +0200 Organization: Compilers Central Lines: 16 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <17-05-011@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: miucha.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="63362"; mail-complaints-to="abuse@iecc.com" Keywords: C, question Posted-Date: 25 May 2017 10:59:36 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:1878 The standard specifies translation phase 4 as: "Preprocessing directives are executed, macro invocations are expanded, and _Pragma unary operator expressions are executed. ..." Does this mean a strict sequence of these actions? At least this example seems to suggest a specific sequence: EXAMPLE In: #define EMPTY EMPTY # include the sequence of preprocessing tokens on the second line is not a preprocessing directive, because it does not begin with a # at the start of translation phase 4, even though it will do so after the macro EMPTY has been replaced. DoDi