Lyckas inte börja med C
Försöker lära mig C inför hösten. Vet något varför det inte funkar?
Jag har inte alls använt den där programmeringsmiljön, men jag tycker det ser ut som om du gör rätt.
Vad står det i slutet av första kommandoraden?
Felmeddelandet "Undefinded symbols for architecture x86_64" antyder något som har med PC att göra men det ser ut som om du kör på en Mac-dator. Kan det ha med saken att göra?
@Yngve: Mac OS-system kan använda sig av x86. Det ser absolut ut som en mac-dator på bilden.
Programmet ser rätt ut. Hur gör du när du kör koden? :)
Smutstvätt skrev:@Yngve: Mac OS-system kan använda sig av x86. Det ser absolut ut som en mac-dator på bilden.
Programmet ser rätt ut. Hur gör du när du kör koden? :)
Jag trycker på ”play” knappen bara
Hmmm, alltså jag är verkligen ingen expert på C, eller Visual Studio Code, men har du provat att köra programmet från terminalen? Kompilera och kör från terminalen. Fungerar det då, eller får du samma fel? :)
Här antyds att det är kompilatorn g++ du vill använda, inte gcc. Huruvida det stämmer vet jag inte, men det är en idé =)
Har du sparat ändringarna till ex1.c? Kanske gcc ser ett äldre version av det.
creamhog skrev:Har du sparat ändringarna till ex1.c? Kanske gcc ser ett äldre version av det.
Vet inte hur man sparar men jag tror det sparas automatiskt
Det är inte säkert att det sparar automatisk. Till exempel här säger det att man måste aktivera auto save själv. Du kan försöka öppna ex1.c med en annan textredigerare och se hur det ser ut.
Smutstvätt skrev:@Yngve: Mac OS-system kan använda sig av x86.
OK, men jag tror ändå att felet har med denna odefinierade symbol att göra. Det står ju att det inte går att länka ihop delarna som behövs.
Yngve skrev:Smutstvätt skrev:@Yngve: Mac OS-system kan använda sig av x86.
OK, men jag tror ändå att felet har med denna odefinierade symbol att göra. Det står ju att det inte går att länka ihop delarna som behövs.
Ja, men märk att den odefinierade symbol är ju _main, som ser ut som main med name mangling. Jag har ingen mac så jag kan inte testa själv, men jag anar att gcc för mac gör name mangling med _ (I'm also finding anecdotal evidence of this, but no docs). Så om det finns en main funktion i ex1.c, då borde _main finnas i objektfilen som ld ser. Därför har jag hypotesen att ex1.c inte ser ut på disk som i VSCode.
@Naturenshjälte, kan du bekräfta att ex1.c innehåller main även utanför VSCode?
Denna "name mangling" är den klassiska för C: alla användarsymboler får ett underscore först, för att man inte ska kunna skriva kod som krockar med de fördefinierade funktionerna i runtimesystemet.
Det är inte mycket till mangling. I C++ däremot måste man ordna så att metoder med samma namn men olika signatur eller klasstillhörighet får olika namn i den slutliga binären.