Anti-Jammer-Thread

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Unified Memory? Dass ich das auf meine alten Tage noch erleben darf! :o
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Jonathan
Establishment
Beiträge: 2369
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

Ich liebe std::unique_ptr. Das ist einfach alles so toll durchdacht, und funktioniert so super. Jetzt ist nicht nur garantiert, dass ich keine Memory-Leaks habe, sondern auch, dass ich immer weiß, wer jetzt mein Objekt verwaltet :)

Alleine, dass das hier kompiliert:

Code: Alles auswählen

my_map[blub]=LoadObject();//liefert unique_ptr<obj>
aber das hier nicht:

Code: Alles auswählen

auto my_obj=LoadObject();//liefert unique_ptr<obj>
my_map[blub]=my_obj;
ist einfach nur herrlich.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von CodingCat »

Definitiv, die Tiefe, mit der ein großer Teil der grundlegenden Mechanismen in C++ durchdacht ist, bedarf bei allem Ärger über die bisweilen grauenvollen Auswüchse des C-Erbes großer Bewunderung. (Die unüberlegte Fortführung des in C halb so schlimmen C-Erbes bedarf dieser leider ganz und gar nicht.) Unerfreulich bezüglich unique_ptr ist ab und an, dass der Zeiger nach der Besitzübertragung gänzlich verschwindet und in diesem Fall für nachfolgende Benutzung mit einem zusätzlichen rohen Zeiger gespiegelt werden muss. Aber gut, sehen wir das einfach als gewollten Zwang zu größtmöglicher Transaktionalität; schließlich wollen wir in der Map ja keine halbfertigen Objekte.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Ich habe nach einem Jahr Rumprobieren tatsächlich zum ersten Mal eine Stelle gefunden, an der __restrict unter x64 meinen Maschinentext verbessert.

Ich kann soweit sagen:
  • __restrict wirkt nur bei der Funktionsdeklaration; bei der Definition ist es wirkungslos. Es wird also als Top-Level-C/V-Qualifier verarbeitet, weil die ja das gleiche Verhalten zeigen, wie wir mittlerweile wissen.
  • __restrict wird nicht auf erbende Funktionen übertragen.
  • In den meisten Fällen konnte ich __restrict weglassen und bekam den gleichen Maschinentext, indem ich den Parameter by value übergeben habe. Visual C++ optimiert wohl pass by-value zu pass by-reference, falls es dabei Aliasing ausschließen kann und die Parameter zu groß für ein Register sind.
    Jetzt kommt der Teil, den ich nicht verstehe: Pass by-reference wird nicht optimiert und erzeugt minderwertigen, Aliasing annehmenden Text. Dabei wurde ja, indem pass by-value zu pass by-reference optimiert wurde, bewiesen, dass der Compiler alle Aufrufe der Funktion erkennt und Aliasing ausschließen kann?!
  • Übrigens werden structs bis hin zu Registergröße bei Übergabe by-value in einem Register übergeben und bewirken überlegenen Text, weil die einzelnen struct-Attribute aus dem Register geholt werden statt jedes einzeln zu lokalisieren und zu laden. Visual C++ optimiert die Übergabe by-reference aber nicht automatisch zu by-value, im Gegensatz zum umgekehrten Fall.
__restrict hat, zumindest für Methoden, also doch Wirkung für x64, das sehe ich nun endlich ein. Jetzt muss ich nur rausfinden, warum bloß für 1 % meiner Methoden.

Das sind übrigens selbstverständlich nur Beobachtungen auf einer Handvoll eigener Funktionen; es muss nicht wirklich so sein wie es mir erscheint.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Anti-Jammer-Thread

Beitrag von eXile »

Krishty hat geschrieben:Unified Memory? Dass ich das auf meine alten Tage noch erleben darf! :o
Da das gerade zum Thema der PS4-Einführung passt, hier ein Interview-Ausschnitt von vor fünf Jahren:
http://www.tgdaily.com/business-and-law-features/36410-tim-sweeney-part-2-directx-10-is-the-last-relevant-graphics-api hat geschrieben:TG Daily: Since you are a member of Microsoft's advisory board for DirectX, you probably have a good idea what we will see next in DirectX. What can we expect and do you see a potential for a segmentation of APIs - all over again?

Sweeney: I think Microsoft is doing the right thing for the graphics API. There are many developers who always want to program through the API - either through DirectX these days or a software renderer in the past. That will always be the right solution for them. It makes things easier to get stuff being rendered on-screen. If you know your resource allocation, you'll be just fine. But realistically, I think that DirectX 10 is the last DirectX graphics API that is truly relevant to developers. In the future, developers will tend to write their own renderers that will use both the CPU and the GPU - using graphics processor programming language rather than DirectX. I think we're going to get there pretty quickly.

I expect that by the time of the release of the next generation of consoles, around 2012 when Microsoft comes out with the successor of the Xbox 360 and Sony comes out with the successor of the PlayStation 3, games will be running 100% on based software pipelines. Yes, some developers will still use DirectX, but at some point, DirectX just becomes a software library on top of ... you know.
Die PS4 wird aber aller Voraussicht nach eine eigene, proprietäre 3D-API bekommen, und hat eben auch eine eigene GPU; und wird damit eben nicht Software-only sein. Auch sonst kann ich das nicht einsehen, zumal der Abstand von Software und 3D-Hardware mit einem Faktor von ca. Einhundert auch nicht plötzlich verschwinden kann.

Andererseits frage ich mich, was solche Leute, die keine 3D-APIs mehr wollen, dann eigentlich in einem 3D-API-Beirat zu suchen haben, und ob das für die Zukunft von Direct3D so prickelnd war.

(Ja, ich weiß, was ich gemacht habe, ist total unfair: Einfach eine Aussage von einer Person über die Zukunft genommen, dann die Zeit abgewartet und die Vorhersage mit der eingetretenen Realität verglichen. Haut mich doch.)
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

1> User defined type 'type_info' has different definitions or layouts in the following modules:
1> 'f:\dd\vctools\crt_bld\SELF_64_amd64\crt\src\build\amd64\dll_obj\nativecpp\ti_inst.obj (C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64\MSVCRT.lib)' ('f:\dd\vctools\crt_bld\self_64_amd64\crt\src\typeinfo' line 47)
1> 'C:\Users\Krishty\Desktop\projects\Temp\Visual C++ 2010 internal helpers.obj' ('c:\users\krishty\desktop\projects\framework\visual c++ 2010 internal helpers.cpp' line 25)
1>
1> User defined type '_GUID' has different definitions or layouts in the following modules:
1> 'f:\dd\vctools\crt_bld\SELF_64_amd64\crt\src\amd64\dll_lib\ehvecdtr.obj (C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64\MSVCRT.lib)' ('f:\dd\public\sdk\inc\guiddef.h' line 22)
1> 'o:\w8rtm.obj.amd64fre\com\published\idlole\public\objfre\amd64\cguid_i.obj (C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x64\uuid.lib)' ('d:\w8rtm.public.amd64fre\sdk\inc\guiddef.h' line 22)
1> 'C:\Users\Krishty\Desktop\projects\Temp\D3D9Rasterizer.obj' ('c:\users\krishty\desktop\projects\framework\com.hpp' line 22)
1>
1>LINK : warning LNK4262: 2 instances of type mismatch
Ich hatte es noch nicht bemerkt, aber Visual C++ hat in den Projekteigenschaften unter Configuration Properties -> Linker -> Advanced die Option Detect One Definition Rule violations bekommen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Ich habe erst vor ein paar Tagen bemerkt, dass Visual Studio einen immer via Doppelklick aufs Ausgabefenster direkt zu einer Datei führt, so lange die Formatierung den MSBuild-Vorgaben folgt.


Das bedeutet, auf den Link von oben übertragen, dass wir nette To Do-Markierungen bauen können, die bei jedem Kompilieren auftauchen und einen bei Doppelklick direkt zur Zeile führen:

    #define TODO_INTERNAL_STRINGIZE(text) #text
    #define TODO_INTERNAL_QUOTE(text) TODO_INTERNAL_STRINGIZE(text)
    #define TODO(toDoText) __pragma(message(__FILE__" ("TODO_INTERNAL_QUOTE(__LINE__)"): TODO: "toDoText))

    ...

    TODO("get shit done")         
*klicklick*


Aber es geht ja noch weiter: Das Verhalten ist ja längst nicht auf die Kompilierung beschränkt. Nett ist das z.B. für Memory Leak Detection, die statt einem endlosen Wulst aus Dateinamen und Zahlen via OutputDebugString() nette Nachrichten ins Output-Fenster ausgibt, die einen sofort zum verursachenden Quelltext führen:

    internal\D3D9.cpp (53): leaking 32 B at 0x000000000202ACDB

Auf der Arbeit bin ich ein Bisschen weitergegangen und habe unsere hunderte Lecks nach Dateien klassifiziert (darauf achten, dass __FILE__ manchmal mit Groß- und Kleinschreibung, und manchmal ohne kommt; und dass die Pfade manchmal relativ sind, und manchmal nicht!), aufsteigend nach Zeilen sortiert, und für jede Zeile zusammenfasst, wie oft wie viele Größen geleckt sind. Der Frustfaktor beim Debugging ist enorm gesunken:

    internal\D3D9.cpp (53):                                    *klicklick*
        leaking 13 x 32 B = 416 B (# 331, 332, 383, 407, …)
    internal\D3D9.cpp (183):                                   
*klicklick*
        leaking 2 x 2048 B = 4096 B (# 335, 13300)
        leaking 1 x 8192 B = 8192 B (# 13304)
        leaking 1 x 32768 B = 32768 B (# 13471)

    clipping.cpp (1358):                                       
*klicklick*
        leaking 480 x 32 B = 15360 B (# 412, 413, 414, 415, …)


Damit ist aber noch nicht Schluss: Lädt eure Engine Shader, Skripte, oder sonstwas? Parst ihr XML? Niemand hält euch davon ab, Nachrichten mit Verweisen auf diese Fremddateien auszugeben, falls mal was schiefgeht. Scheißegal, was für Textressourcen da durch die Anwendung geschoben werden – im Fehlerfall ist man immer nur einen Doppelklick von Datei, Zeile, und Spalte entfernt. Hat meinem Flow wirklich gutgetan.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von CodingCat »

Jep; die D3D-Compiler geben im Übrigen alle ihre Fehlermeldungen bereits in konformem Format zurück. Um auch "anonymem" Shader-Code im Speicher zu diesem Zweck eine Dateizugehörigkeit zu verpassen, bietet D3DCompile den pSourceName-Parameter. Bei Übergabe eines gültigen Strings wandert dieser als Dateipfad in die Fehlermeldungen des Shader-Compilers.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Ist ja auch kein Wunder – schließlich ist der D3D-Compiler in Visual Studio integriert ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

ZFX geht wieder. Und ich dachte schon, ihr hättet tatsächlich eine „Krishty darf nicht eher als 24 Stunden nach dem letzten Bier posten“-Regel realisiert …

… ich erlebe aber sporadisch richtig heftige Timeouts.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 4855
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Schrompf »

Die Timeouts sehe ich auch. Und ich bin recht sicher, dass es nicht an meiner Mecker-Quote hängt. Ich ging stattdessen davon aus, dass da gerade wieder Konfig-Experimente mit Forum und Server betrieben werden.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Anti-Jammer-Thread

Beitrag von eXile »

eXile hat geschrieben:In diesem Jahr gibt es wieder schöne Ereignisse in der großen himmlischen Bespaßungsmaschine zu sehen:
  • C/2011 L4:
    • Vorausichtliche maximale scheinbare Helligkeit: +1
      (Schätzung aus dem Januar 2013)
    • Entspricht ca. der scheinbaren Helligkeit vom Polarstern oder Wega
    • Datum der nächsten Annäherung: 9. März 2013
Man konnte bei klarem Himmel und niedrigem Horizont den Kometen gestern zuerst in unseren Breitengraden sehen; in den kommenden Tagen wird der Komet immer höher über dem Horizont, aber auch immer schwächer zu sehen sein. Beobachtungsrichtung ist ziemlich genau gen Westen, Beobachtungszeitpunkt ca. 19:00 Uhr; keine Bewölkung ist natürlich Voraussetzung.
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Aramis »

Betrifft primaer die Assimp-Entwickler:

http://youtu.be/FaEvMCD4Gus?t=40m26s
40:26

Spricht eigentlich irgendwas dagegen, dass wir "the most unfortunately named library ever" zu unserem offiziellen Untertitel machen - ausser Vernunft, Zeit und unser Ruf? :-)
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von kimmi »

Ich schmeiß mich weg... Da fällt mir ein: neben Umzug und tochter sollte ich mal meine Asset-Importer-Aufgaben abarbeiten.

Gruß Kimmi

P.S.: In Englisch : nope!
Benutzeravatar
Schrompf
Moderator
Beiträge: 4855
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Schrompf »

Find ich gut :)
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
klickverbot
Establishment
Beiträge: 191
Registriert: 01.03.2009, 19:22
Echter Name: David N.

Re: Anti-Jammer-Thread

Beitrag von klickverbot »

Und ich erst … werde mir das Interview mal anhören, wenn ich zu Hause bin.
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von CodingCat »

AMDs CodeXL ist nicht nur das gute alte CodeAnalyst in wunderbare Visual-Studio-Integration gegossen (auch VS11!), es läuft obendrein weiterhin ohne Widerwillen auf meinem handelsüblichen Intel i7. Danke, AMD!
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Aramis »

Ich habe unsere Beschreibung mal aktualisiert :-)
https://github.com/assimp/assimp
Benutzeravatar
Jonathan
Establishment
Beiträge: 2369
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Jonathan »

CodingCat hat geschrieben:AMDs CodeXL ist nicht nur das gute alte CodeAnalyst in wunderbare Visual-Studio-Integration gegossen (auch VS11!), es läuft obendrein weiterhin ohne Widerwillen auf meinem handelsüblichen Intel i7. Danke, AMD!
Naja, ich wollte neulich nochmal meine OpenGL Anwendung debuggen, und es hatte genau wie der mittlerweile alte AMDgDebugger einige Probleme. So wollte es mir z.B. einfach nicht meine Texturen anzeigen, wenn ich das Programm pausierte. Im großen und ganzen ist es schon ein sehr nützliches Tool, aber es hat zumindest für OpenGL Debugging meiner Meinung nach noch Verbesserungspotential. Und das ist insofern schade, als dass es das einzige wirklich brauchte OpenGL-Debuggin Tool zu sein scheint.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
CodingCat
Establishment
Beiträge: 1857
Registriert: 02.03.2009, 21:25
Wohnort: Student @ KIT
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von CodingCat »

Ich nutze es ausschließlich für CPU-Profiling.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Kann es sein, dass Visual Studio 2012 weder mit noch ohne Language Extensions Operatorsynonyme unterstützt?
Zuletzt geändert von Krishty am 23.03.2013, 23:33, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von dot »

Die hat MSVC noch nie unterstützt. Aber: http://msdn.microsoft.com/en-us/library/ayefs2c0.aspx ;)
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Warum wurde ich dann früher bei ::std::vector<::Foo> von Warnungen überschüttet?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von dot »

Du meinst MSVC 11 supported digraphs? :shock:

Edit: Grad getestet und nope, der Fehler muss was Anderes gewesen sein...
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Nein; 11 unterstützt sie ganz sicher nicht mehr. Ich weiß aber, dass 10 oder 9 immer irgendwas Furchtbares gemacht hat, wenn mir versehentlich ein Digraph in die Datei gerutscht ist. Darum bin ich auch im Anti-Jammer-Thread – falls die Scheiße wirklich weg ist, juble ich erstmal.

Übrigens: Kann mir jemand die Regeln für Zeilenumbrüche am Ende von Headern erklären? Ich weiß, dass in C++ jedes Übersetzungsmodul mit einem Zeilenumbruch enden muss – aber was ist mit Headern? Und Headern, die in einem Kommentar oder Präprozessorbefehl enden? Google schickt mich leider immer nur zu '\n'-vs-std::endl-Diskussionen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von dot »

Holy shit: http://msdn.microsoft.com/en-us/library/ee462497.aspx

So wie's aussieht unterstützt MSVC offenbar tatsächlich Digraphs und Trigraphs, wenn /Za da ist. Ansonsten nicht. Das war mir neu, ich hab das vor langer Zeit aus Interesse sogar mal erfolglos ausprobiert...

Edit: Das mit dem Newline stammt afaik aus prästandard Zeiten. Ich würde mal vermuten, das Problem wurde im Standard durch Translation Phase 2 gefixed:
A source file that is not empty and that does not end in a new-line character, or that ends in a new-line character immediately preceded by a backslash character before any such splicing takes place, shall be processed as if an additional new-line character were appended to the file.
Zuletzt geändert von dot am 23.03.2013, 23:56, insgesamt 2-mal geändert.
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Ich glaube auch, bevor C++0x kam, hatte ich auch immer mit /Za (Spracherweiterungen deaktivieren) kompiliert. Daran könnte es also gelegen haben.

Entschuldige – ich wollte die Regeln für Zeilenumbrüche nicht gerechtfertigt, sondern nur erklärt haben :) Heute ist mein freier Tag, da hinterfrage ich ausnahmsweise mal nix.
Nachtrag: Danke! Aber was ist eine Source File? Nur .cpp, oder auch #includes? Vor oder nach Einsatz des Präprozessors?

Nachtrag 2: Zwei Kuriositäten: Google schlägt mir C++ translation phrases vor, und diesen Kniff kann ich bestimmt irgendwo zu meinem Vorteil einsetzen …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von dot »

Wenn ich das richtig verstehe, dann sind "Header" im Sinne des Standard nur die Header Standardlibrary. Ein Source File ist jede Datei die Code enthält, also .cpp, .h etc.

Ein \ am Ende einer Zeile führt dazu, dass der darauf folgende Newline Character entfernt wird, was effektiv bedeutet, dass die nächste Zeile mit der aktuellen Zeile zusammengemerged wird. Wie auch in dem Stackoverflow Thread in einem Comment erwähnt, funktioniert das für das dortige Beispiel mit dem Wide String Literal aber nicht, da der Präprozessor tokenbasiert arbeitet und auf diese Weise nicht zwei Token zu einem werden können. (Man stelle sich mal vor, wie lustig das das Schreiben von mehrzeiligen Makros machen würde...)
Zuletzt geändert von dot am 24.03.2013, 00:15, insgesamt 3-mal geändert.
Benutzeravatar
Krishty
Establishment
Beiträge: 8240
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von Krishty »

Okay; dann versagt Visual Studio dort. Es spuckt mir für die letzten angefangenen Zeilen von #include-Dateien

} // namespace Foo

und

#endif

unerwartete Dateienden entgegen (beharrt darauf, dass Zeilenkommentare und Präprozessordirektiven mit Zeilenumbruch enden – fügt offensichtlich keinen selber ein).
Zuletzt geändert von Krishty am 24.03.2013, 00:13, insgesamt 1-mal geändert.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anti-Jammer-Thread

Beitrag von dot »

Was genau meinst du mit unerwarteten Dateieneden?
Antworten