Ich wundere mich gerade mal wieder etwas... Ich hatte etwas von nullptr für C11 gelesen und in den C++ Code mal die Zeile int *pi = nullptr; eingefügt. gcc frißt das so nicht, weil C11 nicht die Vereinstellung ist. Ich rufe gcc nicht direkt auf, sondern verwende make, und das Makefile hat derzeit auch keine C11 Verweise. Also gebe ich die Option in der Kommandozeile an: $ make cxxflags+=-std=c++11 compiling rcgal_apollonius.cpp rcgal_apollonius.cpp: In function ‘VALUE ag_alloc(VALUE)’: rcgal_apollonius.cpp:59:13: error: ‘nullptr’ was not declared in this scope make: *** [rcgal_apollonius.o] Error 1 $ make cppflags+=-std=c++11 compiling rcgal_apollonius.cpp linking shared-object rcgal_apollonius.so cppflags sind doch die flags for den Präprozessor, und cxxflags die flags für den C++-Compiler. Also ich hätte das genau anders herum erwartet.
Du schreibst ständig C11 aber meinst scheinbar C++11 ?! Da ist ein gewaltiger Unterschied! Salewski, Stefan schrieb: > cppflags sind doch die flags for den Präprozessor, und cxxflags die > flags für den C++-Compiler. Per Konvention, ja > Also ich hätte das genau anders herum > erwartet. Da ist wohl im makefile was verkehrt. Wie das aussieht weißt nur du.
Dr. Sommer schrieb: > Da ist wohl im makefile was verkehrt. Wie das aussieht weißt nur du. Ja ich meine c++11, meine Flagangabe mit -std=c++11 war ja wohl zumindest richtig. Ich hatte ja schon fast gedacht ich hätte mich mit cxxflags und cppflags vertan, oder eben dass nullptr tatsächlich vom Präprozessor verarbeitet wird -- was mich doch gewundert hätte. Dass mit dem Makefile etwas falsch sein könnte, daran hatte ich eher nicht gedacht. Dasselbe wird mit der Anweiung "$ ruby extconfig.rb" mit mkmf generiert, wobei ich derzeit noch Ruby 1.9.3 verwende und auf die Generierung wenig Einfluss habe. Womöglich sollte ich tatsächlich mal auf der Ruby Mailingliste nachfragen.
Salewski, Stefan schrieb: > Dass mit dem Makefile etwas falsch sein könnte, daran hatte ich eher > nicht gedacht. Woran denn sonst, wenn das Compilerargument nicht beim Compiler ankommt... Lass dir doch mal die vollen ausgeführten Kommandos anzeigen und nicht nur das "Compiling ...". Schau dir das generierte makefile auch mal genau an welches der Flags wohin übergeben wird. Vielleicht verwendet das "cxxflags" gar nicht. Oder du hast angegeben dass deine Sourcedateien C-Dateien sind anstelle von C++-Dateien...
Mach dir ein Minimalbeispiel. Also nur eine .cpp Datei mit dem Nullpointer Test. Und das kompilierst du dann direkt von der Kommandozeile und gibst ihm die Option für den C++11 Standard mit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.