Kompilieren in c++14
Also in meinem CSE-natürlich bekommen wir eine header-Datei zu verwenden, gerade jetzt für unsere Programme, die wir schreiben.
Leider kann ich nicht bekommen-terminal zum kompilieren verwenden, die header, es gibt durchaus ein paar Fehler (kompilieren nur mit 'g++'). Auch, wenn ich mich an meiner Universität, und ich bin mit PuTTY bekomme ich den gleichen Fehler während der Verwendung dieses header. Allerdings habe ich nicht den Fehler, wenn ich das kompilieren mit "g++ -std=c++14'.
Habe ich versucht zu kompilieren, die mit diesem Befehl in terminal auf meinem mac, aber es sagt, dass es nicht erkennen, die der c++ - 14 Teil.
dhcp-10-202-147-243:hw1pr1 Admin$ g++ -std=c++14 hw1pr1.cpp
error: invalid value 'c++14' in '-std=c++14'
Jede Hilfe, wie könnte ich diese zu arbeiten, wäre sehr dankbar. Hoffentlich alle gemacht, irgendeine Art von Sinn.
Hier ist die Fehlermeldung die ich bekomme, wenn ich zum Beispiel mit der header-Datei, die ich spreche, im terminal nur mit g++.
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:212:5: warning:
Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map>
[-W#warnings]
# warning Use of the header <ext/hash_map> is deprecated. Migrate to ...
^
In file included from read_first_name.cpp:1:
./std_lib_facilities_4.h:43:20: error: no matching function for call to object
of type 'hash<char *>'
return hash<char*>()(s.c_str());
^~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/__hash:39:12: note:
candidate function not viable: 1st argument ('const value_type *'
(aka 'const char *')) would lose const qualifier
size_t operator()(char *__c) const _NOEXCEPT
^
In file included from read_first_name.cpp:1:
./std_lib_facilities_4.h:112:8: warning: comparison of unsigned expression < 0
is always false [-Wtautological-compare]
if (i<0||size()<=i) throw Range_error(i);
~^~
./std_lib_facilities_4.h:118:8: warning: comparison of unsigned expression < 0
is always false [-Wtautological-compare]
if (i<0||size()<=i) throw Range_error(i);
~^~
3 warnings and 1 error generated.
Dieser Fehler nicht passieren, und das Programm wird kompiliert voll wenn ich mit PuTTY und "g++ - std=c++14'
Versuchen
-std=c++1y
bis der compiler aktualisiert. Da dieser Vorentwurf wurde verfolgt außergewöhnlich gut und ist nur ungefähr das gleiche wie der endgültige standard, das sollte gut genug sein.Sie sollten überprüfen Sie die Versionen der standard-unterstützt von Ihrer version des Compilers.
APerson, die header-Datei 235 Linien, nicht sicher, was zu lang, aber ich überlege mir, dass ist.
Reduzieren Sie es auf eine MCVE, D. H. die kleinste kompilierbare Teilmenge der header, noch das problem veranschaulicht, und dann posten.
InformationsquelleAutor Joe | 2014-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt viele Wechsel zwischen C++ - standards, so was ist in einem gültigen revision muss nicht in einem anderen.
g++ standardmäßig auf
-std=gnu++98
für C++, die der Jahrzehnte alten C++98-standard erweitert mit GNU-Erweiterungen (von denen die meisten konform).Wählen Sie die richtige Version:
-std=c++1y -pedantic
ist eine sehr enge Annäherung an C++14.Welche änderungen eingeführt, die in C++14 können möglicherweise brechen Sie ein Programm, geschrieben in C++11?
Ist, dass "std_lib_facilities_4.h" den header meinst du? Versuchen Sie, ein veralteter standard.
Diese compiler-Optionen
-std=c++1y -pedantic
funktioniert großartig für mich mit clang 3.6, vielen Dank für deine Antwort.InformationsquelleAutor Deduplicator
Schauen, was Sie sagen, Sie sind mit zu verwenden und den Namen format .cpp-Datei, ich denke, ich bin in der gleichen Klasse. Ein Jahr später aussieht, aber hier ist meine Lösung für Archiv Willen:
Den std_lib_facilities.h header kommt, mit dem Bjarne Stroustrup lehrbuch "Programmierung: Prinzipien und Praktiken, die Mit C++". Für diejenigen, ahnungslos, Bjarne Stroustrup erfunden C++ (er hat eine ziemlich gute Ahnung, was er redet). Übrigens, das Buch ist ein fantastischer Weg, um zu lernen, C++, wenn man sich die Zeit nimmt, um tatsächlich zu Lesen. Die std_lib_facilities.h-header ist nur eine bequeme header-Datei, die für Anfänger in C++, mit links zu allen wichtigen standard-Bibliotheken verwendet, die in dem lehrbuch, sowie einige Hilfsfunktionen, die helfen Konto für mögliche Fehler oder Irrtümer, oder einfach nur bequemer für das lernen (z.B. eine error () - Funktion, mit der einfachen Ausnahme werfen für die Schüler, oder das hinzufügen einer "out of bounds" check für Vektoren). Es ist letztendlich nur ein Weg, um den Studierenden ermöglichen, hop rechts in den code, ohne zu lernen Einzelheiten über den Kopf.
Stroustrup hält Sie aktualisiert mit C++ und umfasst damit mehrere Bibliotheken, die erfordern, dass c++11 standard. Der KSZE-Abteilung, dass die Schüler (zumindest in dieser frühen Klasse), um eine Verbindung zu der Abteilung Unix-system kompilieren und von dort aus, um Verwirrung zu vermeiden, mit dem herunterladen und aktualisieren der Compiler.
War ich schon ein paar C++ - Klassen zuvor, und so hatte schon g++ auf meinem Ubuntu-laptop. Ich vermied einschließlich der std_lib_facilities so lange wie möglich, da war ich immer die gleichen Fehler als Thema Schöpfer Joe, wo g++ nicht erkennen das "c++11" - Teil (Hand-einschließlich der erforderlichen Bibliotheken funktionierte gut, bis wir hatten Sie zu einer Klasse aus dem lehrbuch, dass einen die header-helper-Funktionen) . Schließlich fand ich ein Hilfe-Thema online, mir geraten, einfach zu aktualisieren meine g++ - compiler 4.7 oder höher, seit 4.6 und darunter muss nicht die Unterstützung für C++11 (oder natürlich C++14). Es war seltsam, eher beteiligt, im Vergleich zu updates, die man möglicherweise verwendet werden, um auf Mac oder Windows, und ich bezweifle, dass der genaue Prozess anwenden würde, aber das ist (war?) wahrscheinlich das problem: es ist nur eine ältere version von g++, und es muss ein update zum kompilieren von C++11 und höher. Ich empfehle die Suche nach Möglichkeiten zur Aktualisierung von g++/gcc für Mac.
Sollte, weißte, jemand anderes mit diesem problem stolpern, das nicht und haben Ihr problem gelöst noch.
InformationsquelleAutor Halcyon Serenade