[moved to haskell-cafe]
{-# LANGUAGE CPP #-}
module Packer where
#define FLASH_APP_START 1
#define FLASH_APP_END 2
#define INSERT_SECTION(x) (#x, (FLASH_##x##_START, FLASH_##x##_END))
The CPP stringization operator # and the token-catenation operator ##
are ANSI additions over the traditional K+R CPP. Ghc uses the -
traditional flag to exclude them, because both # and ## are valid
Haskell operators, and most people would not want them to be removed
by the CPP preprocessor.
There are also some other lexical differences between Haskell and C
which make it a good ides for ghc to use cpp -traditional.
However, if you really want to use ANSI additions, you can switch to
cpphs,
which does know about the lexical syntax of Haskell.
http://haskell.org/cpphs
To use it with ghc, you will need to pass the following extra options:
ghc -cpp -pgmPcpphs -optP--cpp -optP-ansi
Unfortunately, I'm not certain I can guarantee that the -ansi flag
will take effect - it depends on whether ghc internally adds the -
traditional argument before or after it.
Regards,
Malcolm
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe