2017-01-24 3 views
0

Hinweis: Ich habe xcode sowie seine Befehlszeilen-Tools installiert.Mac-Terminal kompiliert Fehler

gcd.cpp:6:20: fatal error: iostream : No such file or directory

Ist der Fehler, den ich im Terminal bekommen beim Laufen:

g++ gcd.cpp -o gcd -g -Wall -Werror -pedantic-errors -fmessage-length=0

Ich habe keine Ahnung, wie dieses Problem zu beheben. Kann jemand es reparieren?

#include <stdio.h> 
#include <iostream> 
#include <sstream> 

using namespace std; 

int gcdRecur(int a, int b) { 
    if(b == 0) 
     return a; 
    else  
     return gcdRecur(b, a % b); 
} 

int gcdIter(int a, int b) { 
    int z; 
     while(b != 0) { 
      z = b; 
      b = a%b; 
      a = z; 
     } 
     return a; 
} 

int main(int argc, char *argv[]) { 
    if(argc != 3){ 
     printf("Usage: %s <integer m> <integer n>", argv[0]); 
     return -1; 
    } 
    string m_str = (string) argv[1]; 
    string n_str = (string) argv[2]; 
    istringstream iss; 
    int m = 0, n = 0; 
    iss.str(m_str); 
    // Check if the first argument is an integer 
    // by giving the istringstream 0 
    if(!(iss >> m)){ 
     cerr << "Error: The first argument is not a valid integer." << endl; 
     return -1; 
    } 
    iss.clear(); 
    iss.str(n_str); 
    if(!(iss >> n)){ 
     cerr << "Error: The second argument is not a valid integer." << endl; 
     return -1; 
    } 
    int iter = gcdIter(m, n); 
    int recur = gcdRecur(m, n); 
    printf("Iterative: gcd(%d, %d) = %d\nRecursive: gcd(%d, %d) = %d\n", m, n, iter, m, n, recur); 
    fflush(stdout); 
} 

UPDATE

Ausführen des Befehls:

g++ -H gcd.cpp -o gcd -g -Wall -Werror -pedantic-errors -fmessage-length=0

ich jetzt diese Ausgabe (es wird den gleichen Fehler für sstream tun, wenn ich die Reihenfolge davon und Iostream wechseln):

. /usr/include/stdio.h 
.. /usr/include/sys/cdefs.h 
... /usr/include/sys/_symbol_aliasing.h 
... /usr/include/sys/_posix_availability.h 
.. /usr/include/Availability.h 
... /usr/include/AvailabilityInternal.h 
.. /usr/include/_types.h 
... /usr/include/sys/_types.h 
.... /usr/include/machine/_types.h 
..... /usr/include/i386/_types.h 
.... /usr/include/sys/_pthread/_pthread_types.h 
.. /usr/include/sys/_types/_va_list.h 
.. /usr/include/sys/_types/_size_t.h 
.. /usr/include/sys/_types/_null.h 
.. /usr/include/sys/stdio.h 
.. /usr/include/sys/_types/_off_t.h 
.. /usr/include/sys/_types/_ssize_t.h 
+3

Suchen Sie nach vordefinierten Flags in XCode. Möglicherweise müssen Sie den Pfad Ihrer Standardbibliotheksimplementierung angeben. –

+0

Mit dem Flag -H erneut ausführen. h. g ++ -H test.cpp -o gcd -g -Wall -Werror -pedantische Fehler -fmittellänge = 0. Dies zeigt die Präprozessoren Versuche zum Laden von Header-Dateien. Das könnte einen Hinweis darauf geben, was vor sich geht. Auf meinem Macbook Iostream finden Sie hier. /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream – ccpgh

+0

Verwenden Sie XCode g ++ (was eigentlich Clang) oder haben Sie Ihre eigenen installiert? – molbdnilo

Antwort

1

Sie sollten sicherstellen, dass Sie das Xcode-Komma haben nd line tools installiert. Vom Terminal laufen:

xcode-select --install 

Weitere Informationen: http://tips.tutorialhorizon.com/2015/10/01/xcrun-error-invalid-active-developer-path-library-developer-commandline-tools-missing-xcrun/

Immer, wenn ich stecken versuchen, herauszufinden, was der Compiler in Xcode hat, gehe ich immer zu sehen, was der Befehl Xcode verwendet wurde. gehen Sie in Ihrem Projekt auf den Bericht Navigator (sollte auf der linken Seite, rechts außen tab):

enter image description here

Dann die Leitung für die Datei, die Sie interessiert sind zu sehen, weiter:

enter image description here

Klicken Sie auf den kleinen Stapel von Pfannkuchen auf der rechten Seite zu erweitern:

enter image description here

+0

Hmm Okay, ich bin auf dieses Menü gekommen, aber ich weiß nicht, was ich gut genug ansehe, um zu sehen, warum es in Xcode funktioniert und nicht im Terminal. –

Verwandte Themen