Delen via


MASM-expressies versus C++-expressies

De belangrijkste verschillen tussen de evaluatie van MASM-expressies en de C++-expressie-evaluatie zijn als volgt:

  • In een MASM-expressie is de numerieke waarde van een symbool het geheugenadres. In een C++-expressie is de numerieke waarde van een variabele de werkelijke waarde, niet het adres. Gegevensstructuren hebben geen numerieke waarden. In plaats daarvan worden ze beschouwd als werkelijke structuren en moet u ze dienovereenkomstig gebruiken. De waarde van een functienaam of een ander toegangspunt is het geheugenadres en wordt behandeld als functie-aanwijzer. Als u een symbool gebruikt dat niet overeenkomt met een C++-gegevenstype (zoals een niet-gewijzigde modulenaam), treedt er een syntaxisfout op.

  • De MASM-expressie-evaluator behandelt alle getallen als ULONG64 waarden. De C++-expressie-evaluator cast getallen naar ULONG64 en behoudt typegegevens van alle gegevenstypen.

  • Met de MASM-expressie-evaluator kunt u elke operator samen met een willekeurig getal gebruiken. De C++-expressie-evaluator genereert een fout als u een operator samen met een onjuist gegevenstype gebruikt.

  • In de MASM-expressie-evaluator wordt alle rekenkundige bewerkingen letterlijk uitgevoerd. In de C++-expressie-evaluator wordt pointer-arithmetic correct geschaald. Het wordt niet toegestaan wanneer het ongepast is.

  • Een MASM-expressie kan twee onderstrepingstekens ( __ ) of twee dubbele punten ( :: ) gebruiken om leden van een klasse aan te geven. De C++-expressie-evaluator maakt alleen gebruik van de syntaxis van twee dubbele punten. De foutopsporingsprogramma-uitvoer maakt altijd gebruik van twee dubbele punten.

  • In een MASM-expressie moet u een at-teken (@) plaatsen voor alle registers behalve de meest voorkomende registers. Als u dit weglaat bij teken, kan de registernaam worden geïnterpreteerd als een hexadecimaal getal of als symbool. In een C++-expressie is dit voorvoegsel vereist voor alle registers.

  • MASM-expressies kunnen verwijzingen naar bronlijnen bevatten. Deze verwijzingen worden aangegeven met grave accenten ( ` ). U kunt niet verwijzen naar bronregelnummers in een C++-expressie.

Zie ook

MASM-nummers en -operators

C++ Getallen en Operators

Voorbeelden van gemengde expressies

Tekenextensie