Hallo, In asm-Code (Unter anderem in den Quellen des GCC) findet man nicht selten folgendes Code-Fragment: --snip-- #define CONCAT1(a, b) CONCAT2(a, b) #define CONCAT2(a, b) a ## b #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) #define REG(x) CONCAT1 (__REGISTER_PREFIX__, x) SYM(foo) REG(bar) --snip-- __USER_LABEL_PREFIX__ und __REGISTER_PREFIX__ sind von gcc interne definierte #defines. Frage: Wie schreibt man SYM(x) und REG(x) ansi-konform, so dass sie auch gültig sind, wenn #define __REGISTER_PREFIX__ % gilt. Hintergrund: Auf manchen m68k-gcc's gilt __REGISTER_PREFIX__=%. In Abhängigkeit von den verwendeten Flags und der verwendeten Sprache (*.c oder *.S) führte das bis gcc < 3.3 zu Warnungen, mit gcc >= 3.3 gibt es jedoch Errors. Interessanterweise verwendet GCC derartigen Code in m68k-ASM ;) Ralf
On Thu, 2004-01-29 at 15:59, Michael Matz wrote:
Hi,
On Wed, 28 Jan 2004, Ralf Corsepius wrote:
Frage: Wie schreibt man SYM(x) und REG(x) ansi-konform, so dass sie auch gültig sind, wenn #define __REGISTER_PREFIX__ % gilt.
Siehe gcc@gcc.gnu.org Ich sehe, Du hast mein Posting dort gesehen :-)
Ralf
participants (2)
-
Michael Matz
-
Ralf Corsepius