Path: csiph.com!4.us.feeder.erje.net!feeder.erje.net!2.eu.feeder.erje.net!news.swapon.de!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: Stefan Reuther Newsgroups: de.comp.lang.iso-c++ Subject: Re: Interessanter Unterschied zwischen C und C++ Date: Tue, 13 Aug 2019 18:17:28 +0200 Organization: A noiseless patient Spider Lines: 23 Sender: "Moderation de.comp.lang.iso-c++" Approved: Markus Schaaf Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: reader02.eternal-september.org; posting-host="8e1abfb8c4fb9147d10c99a0e2bb2b56"; logging-data="29684"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19YYfIri56CCuQoDT8aqQ7/" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 Hamster/2.1.0.1538 Xref: csiph.com de.comp.lang.iso-c++:2104 Am 12.08.2019 um 10:29 schrieb Thomas Koenig: > In C++ gibt es seit C++17 einen interessanten Unterschied zwischen > (p sei ein Pointer-Ausdruck und i ein Integer-Ausdruck) zwischen > *(p + i) und p[i]. Im ersten Fall ist nämlich nicht definiert, > was zuerst ausgeführt wird, im zweiten Fall kann man sich > drauf verlassen, dass p (einschließlich Seiteneffekten) zuerst > ausgeführt wird, anschließend erst i. Ich wusse das bisher nicht, danke. Am Ende vergrößert das aber wieder nur die Menge von wohldefinierten C++-Programmen, die keine wohldefinierten C-Programme sind. Andererseits ist es schwer zu erkennen, ob ein Programm sich darauf verlässt, was die Auswahl der Toolchain erschwert. Ich kaue ja immer noch daran, meine alte historisch gewachsene Build-Infrastruktur auf eine gescheite CI-Pipeline mit C++14 umzustellen (neuer Compiler = neue Dependencies), solange hängt mein Privatgerümpel auf C++03 fest. Mal sehen, wann ich soweit bin, da einfach einen C++17-Compiler drauf werfen zu können, und problemlos Binaries für alle Plattformen rauszubekommen... Stefan