2016-07-05 33 views
2

Bedeutet das Einschließen der Definition in Klammern einen Unterschied?#if defined WINDOWS vs #if defined (WINDOWS)

Ich frage, weil der Qt Moc-Compiler abstürzt, wenn es die letztere Variante in Klammern eingeschlossen und WINDOWS definiert ist.

Update: Upgrade von Qt 5.4.2 auf Qt 5.6 und ich sehe das Problem nicht mehr.

+3

Das klingt wie ein ernsthafter Fehler in 'moc'. Ein Absturz ist natürlich immer ein Fehler, aber sie sind gleichwertig und letzteres ist nicht einmal ungewöhnlich. – molbdnilo

+0

Ja, ich habe das nur gesehen, wenn die Definition weit unten in der Include-Hierarchie liegt, so dass andere unglückliche Umstände das verursachen können. Alles, was ich weiß, ist, dass das Entfernen der Klammern es behebt, aber es wäre nett, die Grundursache zu isolieren und sie zu melden. –

Antwort

4

Nein, in diesem Fall gibt es keinen semantischen Unterschied. Aber moc Verständnis der C++ - und Preprocessing-Direktiven ist etwas begrenzt, so dass es oft notwendig sein kann, einige Konstrukte zu optimieren, um seine einfache Meinung zu gefallen.

In diesem Fall könnten Sie auch für identische Ergebnisse verwenden.