Varning vid kompilering (C) [LÖST]

Här diskuteras programmering och utveckling
Goncho
Inlägg: 37
Blev medlem: 13 dec 2008, 02:49
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Stockholm

Varning vid kompilering (C) [LÖST]

Inlägg av Goncho »

Halloj,
sitter med en liten uppgift liknande koden nedan. Jag ska skriva ut adressen till ett antal olika intar för att ta reda på dess strlk i minnet. I skolan, som kör solaris, fungerar nedanstående kod med gcc. Men när jag kör "gcc mitt_program.c" i terminalen i Ubuntu så varnar den att argument 2(rad 10) är en int * och inte en int. Eftersom det fungerar i skolan undrar jag om jag saknar något, kan jag installera något extra till gcc eller varför får jag en varning? När jag kör programmet ändå så fungerar det dock bra vad jag kan se. Finns det någon bokstav som lämpar sig bättre för en int *?

I övrigt blir jag glad om någon har en bra sida med någon typ av tabell för olika bokstäver för string format i C. :)

Kod: Markera allt

#include <stdio.h>

const int size = 12;

int main(){
  int ett = 1;
  short tva = 2;
  long tre = 3;

  printf("int ett = %d", &ett);
}
Senast redigerad av 1 Goncho, redigerad totalt 1 gånger.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Varning vid kompilering (C)

Inlägg av Konservburk »

Goncho skrev:sitter med en liten uppgift liknande koden nedan. Jag ska skriva ut adressen till ett antal olika intar för att ta reda på dess strlk i minnet. I skolan, som kör solaris, fungerar nedanstående kod med gcc. Men när jag kör "gcc mitt_program.c" i terminalen i Ubuntu så varnar den att argument 2(rad 10) är en int * och inte en int. Eftersom det fungerar i skolan undrar jag om jag saknar något, kan jag installera något extra till gcc eller varför får jag en varning? När jag kör programmet ändå så fungerar det dock bra vad jag kan se.
Ett bra tips är att använda gcc -Wall
Goncho skrev:Finns det någon bokstav som lämpar sig bättre för en int *?
Vet inte riktigt om jag förstår frågan, men jag svarar %p istället för %d.
Goncho skrev:I övrigt blir jag glad om någon har en bra sida med någon typ av tabell för olika bokstäver för string format i C. :)

Kod: Markera allt

man 3 printf
Goncho
Inlägg: 37
Blev medlem: 13 dec 2008, 02:49
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Stockholm

Re: Varning vid kompilering (C)

Inlägg av Goncho »

Tack för snabbt svar.Du förstod frågan rätt. Undrade alltså vad jag skulle skriva istället för %d.

Nu ska jag lusläsa manualen.

Edit: Hittar bara man 1 printf? "Ingen manualpost för printf i avsnitt 3"

Edit2: Vad gör 'gcc -Wall'. Ser inga större skillnader mot bara gcc.
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: Varning vid kompilering (C)

Inlägg av Lars »

Goncho skrev:Edit: Hittar bara man 1 printf? "Ingen manualpost för printf i avsnitt 3"
Installera manpages-dev
Goncho
Inlägg: 37
Blev medlem: 13 dec 2008, 02:49
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Stockholm

Re: Varning vid kompilering (C)

Inlägg av Goncho »

Tack Lars.
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Varning vid kompilering (C)

Inlägg av mcNisse »

Du skriver ut adressen till variableln ett i ditt program inte värdet av det... :P
Goncho
Inlägg: 37
Blev medlem: 13 dec 2008, 02:49
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Stockholm

Re: Varning vid kompilering (C)

Inlägg av Goncho »

mcNisse skrev:Du skriver ut adressen till variableln ett i ditt program inte värdet av det... :P
Tack men det var meningen :)
Förstår var varningarna kommer ifrån, men inte varför jag får dom i Ubuntu och inte i Solaris.
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Varning vid kompilering (C)

Inlägg av mcNisse »

Du skriver ut en long och inte en int när du skriver ut adressen. testa %ld.
Varningarna kan bero på olika versioner av gcc.
jsiei97
Inlägg: 309
Blev medlem: 09 dec 2008, 21:34
OS: Xubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Trelleborg

Re: Varning vid kompilering (C)

Inlägg av jsiei97 »

Goncho skrev: När jag kör programmet ändå så fungerar det dock bra vad jag kan se. Finns det någon bokstav som lämpar sig bättre för en int *?
Tja, ett förslag kan vara nedan.

Kod: Markera allt

#include <stdio.h>
#include <stdlib.h>

const int size = 12;

int main(){
    int ett = 1;
    void* pEtt = &ett;

    short tva = 2;
    void* pTva = &tva;

    long tre = 3;
    void* pTre = &tre;

    printf("int ett = %p \n", pEtt);
    printf("int två = %p \n", pTva);
    printf("int tre = %p \n", pTre);
    exit(0);
}
Ett tips är att slå på alla varningsflaggor du kan hitta till gcc, -Wall är bara en start ;D


Goncho skrev: I övrigt blir jag glad om någon har en bra sida med någon typ av tabell för olika bokstäver för string format i C. :)
Tog ner K&R från bokhyllan och slog upp printf... och där fanns det.

Fast det är kanske lättare att titta på
* http://en.wikipedia.org/wiki/Printf#pri ... aceholders
* http://www.cplusplus.com/reference/clib ... rintf.html
Dvs de två första träffarna på google när jag matade in printf :P


/Johan
Goncho
Inlägg: 37
Blev medlem: 13 dec 2008, 02:49
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Stockholm

Re: Varning vid kompilering (C)

Inlägg av Goncho »

Hehe, tack då.
Har googlat men just printf var lite för enkelt för att jag skulle komma på det tror jag :)
jsiei97
Inlägg: 309
Blev medlem: 09 dec 2008, 21:34
OS: Xubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Trelleborg

Re: Varning vid kompilering (C)

Inlägg av jsiei97 »

Goncho skrev:Hehe, tack då.
Har googlat men just printf var lite för enkelt för att jag skulle komma på det tror jag :)
Ett annat inte helt uppenbar men mer generellt tips är att använda man:
man 3 printf
Grupp 3 av man-sidorna innehåller just info om lib-anrop.

och för att söka bland man sidor efter t.ex. printf.
man -k printf
Tror för övrigt att man funkar lika bra på Solaris.

/Johan
(Lycka till med programmeringskursen,
och glöm inte att c är så mycket mer än bara det man lär ut i skolan :) )
Skriv svar

Återgå till "Programmering och webbdesign"