Alastair Reid wrote: > Any time you take two large C programs/libraries and try to merge > them, you're likely to run into preprocessor (or compiler) related > errors like those you describe. [...]
Sad, but very true! And GHC's headers are not very nice in this respect: panne@jeanluc:~> grep '#define [^ \t][^ \t] ' /usr/lib/ghc-5.03/include/* /usr/lib/ghc-5.03/include/PrimOps.h:#define C 0 /usr/lib/ghc-5.03/include/PrimOps.h:#define R 1 /usr/lib/ghc-5.03/include/PrimOps.h:#define C 1 /usr/lib/ghc-5.03/include/PrimOps.h:#define R 0 panne@jeanluc:~> grep '#define [^ \t][^ \t] ' /usr/lib/ghc-5.03/include/* /usr/lib/ghc-5.03/include/Regs.h:#define R1 (BaseReg->rR1) /usr/lib/ghc-5.03/include/Regs.h:#define R2 (BaseReg->rR2) /usr/lib/ghc-5.03/include/Regs.h:#define F1 (BaseReg->rF1) /usr/lib/ghc-5.03/include/Regs.h:#define F2 (BaseReg->rF2) /usr/lib/ghc-5.03/include/Regs.h:#define F3 (BaseReg->rF3) /usr/lib/ghc-5.03/include/Regs.h:#define F4 (BaseReg->rF4) /usr/lib/ghc-5.03/include/Regs.h:#define D1 (BaseReg->rD1) /usr/lib/ghc-5.03/include/Regs.h:#define D2 (BaseReg->rD2) /usr/lib/ghc-5.03/include/Regs.h:#define L1 (BaseReg->rL1) /usr/lib/ghc-5.03/include/Regs.h:#define Sp (BaseReg->rSp) /usr/lib/ghc-5.03/include/Regs.h:#define Su (BaseReg->rSu) /usr/lib/ghc-5.03/include/Regs.h:#define Hp (BaseReg->rHp) And so on... SimonM: What about a "poor man's" namespace, i.e. prefixing every macro, type, etc. with "GHC"/"ghc"? OpenGL, GLUT, GTK, etc. do a similar thing, and although it's a primitive measure, it's very effective. Cheers, S. _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users