9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Joel Salomon <chesky@plan9.jp>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] Include guards and multiple includes
Date: Mon, 23 Oct 2006 15:12:17 -0400	[thread overview]
Message-ID: <2ce618c636a8a74af13258cdeaa93de0@plan9.jp> (raw)
In-Reply-To: <e44be67fc6736d0e097e632a0cebdba9@terzarima.net>

> > ?c only recognize 9
> > preprocessor symbols:
<snip>
> 
> and that's easily more than too much

When metaprogramming techniques are needed, should we have the C
preprocessor or are we going to get a better tool?  (I know!  I know!
C++ templates!  ☺)

I’ve needed the full-power preprocessor in the past, when I had to
implement a miniature function-generating and function pointer table
populating mini-language (and it really was the most readable,
debuggable, and maintainable implementation of the spec possible).  I
didn’t need the various #ifs, but I did need ANSI-type macro
expansion; IIRC, ?c’s is different enough—and not so well documented
(looking at the implementation of the assert macro; how do you do
symbol catenation, or conversion to a string?)—that an implementation
of this trick would need subtle rewriting.

I don’t know if a “good” metaprogramming/code generation tool is
possible for a language with syntax more complicated than Lisp’s, but
even CPP has its use.

For the sort of conditional compilation admitted by “#ifdef Considered
Harmful”, what minimal set of CPP symbols would suffice?

--Joel



  reply	other threads:[~2006-10-23 19:12 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-20 18:45 Paul Lalonde
2006-10-20 19:27 ` Joel Salomon
2006-10-20 20:18   ` Russ Cox
2006-10-20 20:37     ` Paul Lalonde
2006-10-22 16:37       ` Joel Salomon
2006-10-23 12:29         ` Charles Forsyth
2006-10-20 23:15 ` geoff
2006-10-20 23:39   ` Bruce Ellis
2006-10-24 14:32   ` AtomicKobold Design
2006-10-23 12:39 ` Rogelio Serrano
2006-10-23 12:41   ` erik quanstrom
2006-10-23 12:52     ` Rogelio Serrano
2006-10-23 13:26       ` erik quanstrom
2006-10-23 15:30         ` Joel Salomon
2006-10-23 18:43         ` Charles Forsyth
2006-10-23 19:12           ` Joel Salomon [this message]
2006-10-23 20:23             ` geoff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2ce618c636a8a74af13258cdeaa93de0@plan9.jp \
    --to=chesky@plan9.jp \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).