2010-02-19 2 views
8

Ich habe ein Stück Code, der mit x86 gcc 4.4.1 ohne Probleme kompiliert, aber mit blackfin gcc 4.1.2 mit vielen "erwartete unqualifizierte-id vor numerischen Konstante" Fehler fehlschlägt. Ich sehe, dass einige Variablennamen mit einigen vordefinierten Makros kollidieren. Ist es möglich, definierte Makros in einer bestimmten Zeile einer cpp-Datei zu sehen?Kann ich während der Kompilierung eines C-Codes definierte Makros sehen?

Antwort

11
gcc -dM -E myfile.cpp 
  • Der -dM Schalter teilt GCC alle Makros in der angegebenen Datei definiert Dump (es wird eine Liste von Makros erforderlich ist und durch den Sprachstandard definiert wird als zusätzliche Makros GCC selbst definiert).

  • Der Schalter -E weist GCC an, das Kompilieren nicht fortzusetzen, nachdem es die Datei vorverarbeitet hat.

Um eine Liste von Makros in einer gegebenen Zeile einer CPP-Datei, kann es einfacher sein, zuerst herauszufiltern einen des vordefinierten Makros (Makros definiert durch den Compiler) definiert, um zu sehen. In BASH, könnten Sie tun:

LINE=40 
FILE=myfile.cpp 
HEADER=myfile.h 
diff <(grep -h '#include[[:space:]]*<.*>' ${FILE} ${HEADER} | gcc -dM -x c++ -E -) <(cat ${FILE} | head -n ${LINE} | gcc -x c++ -dM -E -) 

Diese alle Makros ausfiltern soll durch Standard-Header oder Frameworks definiert. Der zusätzliche Teil -x c++ weist GCC an, die Eingabe als C++ - Quelle zu interpretieren [die Vorverarbeitung erfordert], weil es aufgrund der Dateinamenerweiterung nicht in der Lage ist, sie zu bestimmen (der Quellcode wird über GCC an GCC übergeben) stdin).

Verwandte Themen