AND, OR



  • Hallo zusammen,

    habe mir kürzlich libzeep runtergeladen, kompiliert mit dem gcc super.

    Nur mit dem MSVC gibts Probleme wegen

    if ( bla or blub )
    

    1. Weiß jemand ob and,or C++-Standard ist ?
    2. Wie kriegt man diese Operatoren im MSVC ans laufen ?

    Gruß
    nurF



  • 1 ja
    2 zum beispiel #define or ||, aber lieber nicht, die arbeitskollegen sollen den code ja noch lesen können.


  • Mod

    edit: volkard war schneller.



  • MSVC kann kein and,or etc? Vielleicht bringt #include <ciso646> etwas. Aber eigentlich ist and,or,not etc. Teil des C++ Standards und imho deutlich leserlicher.


  • Mod

    #include <ciso646>
    


  • arrr, zu langsam



  • camper schrieb:

    #include <ciso646>
    

    nutzt das eigtl iwer von euch?

    bb



  • ich nicht



  • camper schrieb:

    #include <ciso646>
    

    Danke, genau das habe ich gesucht.



  • unskilled schrieb:

    camper schrieb:

    #include <ciso646>
    

    nutzt das eigtl iwer von euch?

    Nutzt wer Windows? 😉



  • sicherlich!
    ❤ M$ 😛



  • unskilled schrieb:

    camper schrieb:

    #include <ciso646>
    

    nutzt das eigtl iwer von euch?

    Ich nicht, kenn auch keinen, der das nutzt. Es ist übrigens ganz erhellend, wenn man sich mal anguckt, was diese ominöse Norm ISO 646 eigentlich ist. Da steht nämlich nicht drin, dass man den UND-Operator auch als "and" schreiben kann 😉

    Das ist eine Art Internationalisierung des amerikanischen ASCII-Codes, also eine Zeichentabelle mit 127 Einträgen, die weitestgehend mit ASCII übereinstimmt. Bis auf einige Positionen, die jedes Land für landesspezifische Zeichen nutzen kann. Unter anderem gehört das Zeichen | dazu, das in der deutschen ISO646-Codepage mit dem kleinen ö belegt ist. <ciso646> ist also genau für die armen Gestalten gedacht, die mit solchen Systemen arbeiten müssen und nicht if (a öö b) schreiben wollen...



  • Bashar schrieb:

    Da steht nämlich nicht drin, dass man den UND-Operator auch als "and" schreiben kann 😉

    Stimmt, das steht ja auch schon im C++-Standard, §2.5 🙂

    <ciso646> ist also genau für die armen Gestalten gedacht, die mit solchen Systemen arbeiten müssen und nicht if (a öö b) schreiben wollen...

    Andersrum, das war vielleicht mit <iso646.h> im C-Standard so, bei C++ sind die Token schon im Standard (§2.5) und daher nicht im <ciso646> header:

    Der Standard, §C.2.2.2,1 schrieb:

    The tokens and, and_eq, bitand, bitor, compl, not_eq, not, or, or_eq, xor and xor_eq are keywords in this International Standard (2.11). They do not appear as macro names defined in <ciso646>

    Die Crux ist also nicht, dass ISO646 Codepages ohne | etc. erlaubt, sondern dass die alternativen Präprozessortoken, die aus genau solchen Gründen im Standard definiert wurden, bei gewissen Compilern nicht implementiert sind.



  • OK, ciso646 ist dann wohl einfach leer? Ich hatte eigentlich iso646.h bzw. die Nicht-Unterstützung von and, or usw. als Keywords beim VC++ im Hinterkopf.



  • Bashar schrieb:

    OK, ciso646 ist dann wohl einfach leer?

    Bei standardkonformen Compilern ja. VC++ ist in der Hinsicht nicht standardkondorm und includiert deshalb einfach iso646.h um die #defines nachzuliefern. Es scheint aber nicht der einzige Compiler zu sein der da nicht konform ist, z.B. bei IBM's XL C/C++ für AIX hab ich auch einen Vermerk gesehn, dass iso646.h includiert wird.
    Siehe auch hier.


Anmelden zum Antworten