Fehler, Irrtümer, Fragen - Seite 1003
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
ts==true und ts!=NULL sind völlig unterschiedliche Ausdrücke.
Außerdem
ts==true und ts!=false sind ebenfalls unterschiedliche Ausdrücke
Wissen Sie, wie sie sich unterscheiden? Nicht nur in der Syntax, sondern auch in der Semantik.
Die Frage zielte nur darauf ab, dass ts ein Array ist. Und warum wird dieses if(ts) kompiliert und die oben genannten nicht.
Der Ausdruck if(ts) bedeutet, dass das Array-Objekt ts tatsächlich existiert. Ich habe ausdrücklich die Semantik angesprochen.
Wollen Sie die Zusammenstellung dieses Falles verbieten oder reicht eine Warnung aus? (Übrigens, es muss eine Warnung ausgesprochen werden. Wenn es keine Warnung gibt, ist es unsere Schuld, etwas ist abgebrochen)
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
stringo, 2013.06.17 06:35
Der Ausdruck If(ts) bedeutet, dass das Array-Objekt ts tatsächlich existiert. Ich habe ausdrücklich von Semantik gesprochen.
Wollen Sie die Zusammenstellung dieses Falles verbieten oder reicht eine Warnung? (Übrigens, es sollte eine Warnung geben. Wenn es keine Warnung gibt, ist es unsere Schuld, etwas ist kaputt)
void OnInit()
{
ts[0]=0;ts[1]=1;
if(ts)Print("ts[0]=0");
ts[0]=1;
if(ts)Print("ts[0]=1");
}
void OnTick()
{
}
ServiceDesk erkennt den Fehler nicht an und verweist auf die Tatsache, dass Kennungen nicht mit einer Zahl beginnen können.
Aber 5Test ist kein Bezeichner, sondern ein Dateiname. Und Dateinamen können mit einer Ziffer beginnen, und für #import .ex5-Dateinamen gibt es keine Einschränkungen.
ServiceDesk erkennt den Fehler nicht an und verweist auf die Tatsache, dass Kennungen nicht mit einer Zahl beginnen können.
Aber 5Test ist kein Bezeichner, sondern ein Dateiname. Und Dateinamen können mit einer Ziffer beginnen, und für #import .ex5-Dateinamen wurden keine Einschränkungen festgelegt
5Test::A ist ein Bezeichner.
Und 5Test wird als Dateiname erkannt, solange dieser Name im Importsatz in Anführungszeichen gesetzt wird (Sie haben dort übrigens auch "5Test.ex5" stehen).
Deshalb fügen C/C++-Compiler automatisch einen Unterstrich (_) an die interne Darstellung des Funktionsnamens in einer Datei/einem Modul an, so dass der resultierende Name "_5TestA" nicht mit einer Zahl beginnt, was die Kompatibilität gewährleistet
Wie sich herausstellte, war das auch der Fall. Sie müssen es einfach akzeptieren.
Dies ist eine gefährliche Stelle zum Editieren - das Verhalten des Compilers kann sich so stark ändern, dass niemand zufrieden sein wird.
Dies ist eine gefährliche Stelle zum Editieren - das Verhalten des Compilers kann so stark verändert werden, dass niemand damit zufrieden ist.
Ich stimme zu.
Bitte sehen Sie sich dieses Beispiel an:
Der C/C++-Compiler hat genug Grips, um die Variable aX von dem parametrischen Makro aX( X ) zu unterscheiden.
Parametrische Makros sind die einzige Alternative, da es keine Inline-Funktionen gibt und sich die Namen in langem Code oft überschneiden können
Einverstanden.
Bitte sehen Sie sich dieses Beispiel an:
Der C/C++-Compiler hat in einer ähnlichen Situation die Fähigkeit, die Variable aX von dem parametrischen Makro aX( X ) zu unterscheidenSicher, ich habe neulich erst Beispiele veröffentlicht:
Ich danke Ihnen! Ich habe es mit Ihrer Hilfe herausgefunden.