12 svar
221 visningar
Naturenshjälte 22 – Fd. Medlem
Postad: 28 jul 2021 13:44

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?

Laguna 28597
Postad: 28 jul 2021 15:35

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?

Yngve Online 37885 – Livehjälpare
Postad: 28 jul 2021 17:31 Redigerad: 28 jul 2021 17:31

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?

Smutstvätt 23813 – Moderator
Postad: 28 jul 2021 17:46

@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? :)

Naturenshjälte 22 – Fd. Medlem
Postad: 28 jul 2021 18:04
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

Smutstvätt 23813 – Moderator
Postad: 28 jul 2021 18:18

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? :)

Skaft 2373 – F.d. Moderator
Postad: 28 jul 2021 18:23

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é =)

creamhog 286 – Livehjälpare
Postad: 28 jul 2021 21:16

Har du sparat ändringarna till ex1.c? Kanske gcc ser ett äldre version av det. 

Naturenshjälte 22 – Fd. Medlem
Postad: 28 jul 2021 21:32
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

creamhog 286 – Livehjälpare
Postad: 28 jul 2021 22:18

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. 

Yngve Online 37885 – Livehjälpare
Postad: 29 jul 2021 11:18
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.

creamhog 286 – Livehjälpare
Postad: 29 jul 2021 11:54
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?

Laguna 28597
Postad: 29 jul 2021 12:40

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. 

Svara Avbryt
Close