[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

Reply via email to