Im Programm Ich bin Codierung, einer meiner Funktion Erklärungen geht so:Sollte ich __restriction auf Referenzen verwenden?
bool parse(const sentence & __restrict sentence)
{
// whatever
}
Wenn ich den Code mit Microsoft Visual Studio 2010 Express kompilieren, der Compiler beschwert sich:
Warnung C4227: Anachronismus verwendet: Qualifier auf Referenz werden ignoriert
jedoch this page von GCC in der Dokumentation sagt:
Zusätzlich zu den eingeschränkten Zeigern können Sie eingeschränkte Referenzen angeben, die angeben, dass der Verweis im lokalen Kontext kein Alias enthält.
Und die gleiche Seite gibt ein sehr explizites Beispiel:
void fn (int *__restrict__ rptr, int &__restrict__ rref)
{
/* ... */
}
Haben falsch verstehe ich MVSC die Warnung? oder sollte ich alle meine Referenzen in Zeiger umwandeln, so dass __restrict
gilt?
Was ist der Sinn des Vergleichs von MSVC und GCC hier? '__restrict' ist eine ** Anbietererweiterung **, Sie müssen also nach den Regeln jedes Anbieters spielen. –