Permalänk

C++ med xcode efter uppdatering

Hej,

Någon som har koll på varför xcode inte kompilerar?

Om jag gör en enkel utskrift som nedan så måste jag lägga till << endl eller \n efter utrop.

#include <iostream>

using namespace std;

int main ()
{
cout << "hej" << endl;
}

eller så här funkar med

#include <iostream>

using namespace std;

int main ()
{
cout << "hej\n";
}

Har suttit ett antal timmar med detta ute att förstå mig på det.
Det skumma är att om jag öppnar ett gammalt program så funkar det hur bra som helst. Även om jag kopierar ett gammalt program och klistrar in det i ett nytt projekt så fungerar det.
Det som händer när det inte fungerar är att rutan som utskriften hamnar i, åker upp men att det som skall stå, typ "hej" bara visas en tiondels sekund eller så. Senast igår var allt som det skulle, men efter uppdatering hände detta. Kan vara jag som råkat komma åt någon inställning?

Permalänk
Medlem

Hmm... vad händer om du lägger till return 0; i slutet av main-loopen?

Visa signatur
Permalänk

Efter cout-anropet har programmet kört färdigt, därför stängs terminalen nästan direkt efter du kör programmet. Testa att lägga in "cin.get();" på raden efter utskriften; programmet kommer skriva ut "hej" och sedan vänta på input från användaren innan den fortsätter vidare.

Visa signatur

MSI z170a SLI-Plus - i7 6700K @ 4,6GHz - RTX 2060 - 32GB HyperX Fury DDR4 2666Mhz - Fractal Design arc midi r2 - Noctua UH-14S

Permalänk

@linsjb: Hej,

Det är givetvis med, men det skall fungera utan det med.
Helskumt är det!

Permalänk

@mortelsson:

Jag har prövat sin.get(); med. det blir samma resultat.
själva rutan där nere som utskriften skall komma i, åker upp som vanligt bara att "hej" visas e tiondels sekund eller så!

Permalänk

Så här kan jag visa mer tydligt.

#include <iostream>

using namespace std;

int main ()
{
cout << "hej" << endl;

cout << "hallå\n";

cout << "hejsan";

cin.get();
return 0;
}

Det som står i rutan när jag kompilerat är endast:

hej
hallå

hejsan blir aldrig utskrivet.

Permalänk
Datavetare

Känns nästan lite som en bug, "hejsan" borde tvingas ut när du väntar på input i cin.get().

I normalfallet är det ändå så att terminalutskrifter är buffrade per rad, endl och "\n" ger inte bara radbrytning utan de flushar också bufferten så utskriften tvingas ut på terminalen.

Testa att ändra ditt exempel så här

#include <iostream> using namespace std; int main () { cout << "hej" << endl; cout << "hallå\n"; cout << "hejsan" << flush; cin.get(); return 0; }

Det borde tvinga ut utskriften av "hejsan".

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk

@Yoshman: Helt stört, det funkade inte heller. Blir helt jävla knäckt alltså, har inlämning idag kl 13 och har inte ens hunnit starta med uppgiften.
Jag skrev precis till xcode med så får väl hoppas på svar där.

Sedan har jag testat med ett annat program Eclipse men det gick inte installera för att det var en äldre version.
Finns det något mer man kan använda? Börjar bli lite desperat nu!

Permalänk

@apan82ful: Har du kompilerat om koden efter du ändrat den? Låter nästan som om du kanske glömt att göra det; att programmet som körs i själva verket är gammal kod.

Visa signatur

MSI z170a SLI-Plus - i7 6700K @ 4,6GHz - RTX 2060 - 32GB HyperX Fury DDR4 2666Mhz - Fractal Design arc midi r2 - Noctua UH-14S

Permalänk

@mortelsson: Jag trycker som jag gjort tidigare på play knappen för att kompilera. Det finns inget mer än play. Ingen build knapp som på
t ex. code blocks. Vad mer kan man göra? Jag har installerat om programmet och så men det är samma visa.

Permalänk

@apan82ful:
Har du provat att kompilera manuellt i terminalen och sedan köra?
g++ main.cpp -o main
./main

Visa signatur

MSI z170a SLI-Plus - i7 6700K @ 4,6GHz - RTX 2060 - 32GB HyperX Fury DDR4 2666Mhz - Fractal Design arc midi r2 - Noctua UH-14S

Permalänk

@mortelsson: Tack för råd, Jag har varit inne på forumet för xcode och läst. Det är många som har samma problem och det verkar som det ligger i senaste uppdatering. Jag håller på att ladda ner tidigare version för att testa. det var fler som gjorde det och efter det fungerar det.