compilernachricht per #pragma

OP #1482410
Hi,
gibt es im gcc ein pragma, mit dem man den Compiler veranlassen kann 
eine Nachricht auszugeben?

sowas wie #pragma message beim msvc

Ich benutze sowas recht gerne für TODOs oder Bug-warnungen,
so dass man im Code dann schreibt:

#pragma TODO("some Optimizatio possible here")

#pragma BUG("possible bug in Mode xy")

und beim compilieren das dann mit File und Zeilennummer in der Ausgabe 
stehen hat.
Persönliche Seite #1482434
Eigentlich ist sowas vorgesehen
http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

Aber WinAVR (und AVR-GCC?) kennen #pragma nicht.

Ein schwacher Ersatz wäre eventuell

#warning "Mache mich jetzt an main() ran!"

Schwacher Ersatz, weil die Messagezeile nicht geparst wird. Die Warnung 
wird vorher ausgegeben. Es geht also z.B. nicht

#warning "Compiling" _FILE_

analog zu

#pragma message "Compiling" _FILE_

mit Ersetzen von _FILE_ durch den aktuellen Namen der Quellcodedatei.

#warnung geht auch nur, wenn man die Warnungen nicht per 
Kommandozeilenoption unterdrückt (z.B. -w) hat.

#Warnung gibt automatisch Dateinamen und Zeilennummer mit an.
Gast #1482650
DaS gehört aber eigentlich auch nicht so in den Code, daß es vom 
Compiler ausgewertet werden muß. Ich verwende dafür einfach einen 
Kommentar, den ich mit "TODO: " beginne. Erstens färbt das 
Syntaxhighlighting meines Compilers dies besonders ein, so daß man es 
beim Ansehen des Code sofort sieht, zweitens kann ich dann per grep nach 
allen Todos suchen. Eine andere Möglichkeit ist auch, wenn man z.B. 
doxygen verwendet, den den Tag @todo dafür einzusetzen. In der 
generierten Source-Doku bekommt man bei den 
Funktionen/Strukturen/Klassen/... dann die Todos mit angezeigt, und es 
gibt außerdem noch eine separate Todo-Liste, wo alle aufgeführt sind.
OP #1482940
kennst du das nicht? der Compiler nimmt doch die c-dateien, schaut da 
rein und spuckt rtf-dateien aus - und da ist das farbig.
scnr

@rolf:
muss nicht aber kann.

ein #pragma TODO()
ist doch genauso dokumentativ, wie ein // TODO:
Da steht es ja, mit grep kannst du es immer noch rausholen.

Nur Wenn jemand ein >100-Dateien-Projekt auscheckt, ist es ganz nützlich 
wenn man beim Bauen direkt darauf aufmerksam gemacht wird, und nicht 
erst, wenn man explizit danach schaut, oder gar erst einen Doxygen-Lauf 
gestartet hat, der ansich nochmal 10min+ dauert.
Moderator Persönliche Seite #1482984
Vlad Tepesch schrieb:

> ein #pragma TODO()
> ist doch genauso dokumentativ, wie ein // TODO:

Naja, weiß gar nicht, wie pragmas derzeit im Standard definiert sind.
Zu Beginn von C99 waren sie wohl "implementation-defined", und es
gab mal eine Implementierung von GCC, die beim Auftreten eines pragmas
definiert hat, dass das Spiel nethack angeworfen wird. ;-)  War voll
standardkonform...

> Nur Wenn jemand ein >100-Dateien-Projekt auscheckt, ist es ganz nützlich
> wenn man beim Bauen direkt darauf aufmerksam gemacht wird, ...

Dafür wiederum ist aber die Warnung gut.  Dein Code wird doch nicht
etwa noch anderweitige Warnungen generieren?
Gast #1483102
>> Erstens färbt das Syntaxhighlighting meines Compilers dies besonders
>> ein...
>
> Welcher Compiler macht denn so was ?

Argl.... natürlich meinte ich den Editor.

> ein #pragma TODO()
> ist doch genauso dokumentativ, wie ein // TODO:
> Da steht es ja, mit grep kannst du es immer noch rausholen.

Ja, aber das Pragma ist compilerspezifisch. Ich halte es nicht für 
nützlich, wenn die TODs beim Compilieren irgendwo ausgegeben werden. Der 
Kommentar funktionert Compiler-unabhängig. Wer's unbedingt beim 
Compilieren ausgegeben haben will, schreibt halt einfach den grep-Aufruf 
mit ins Makefile.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.