Avatar billede dank Nybegynder
26. oktober 2003 - 12:03 Der er 10 kommentarer og
2 løsninger

simpelt printf

Sidder og prøver at lære en smule C - har følgende kode:

#include <stdio.h>

void main ()
{
  printf ("\nhej\n");

}

test ()
{
  printf ("aaaaaaaaaaaa");
}


Jeg får følgende fejl:

linux:~/c # gcc test.c
test.c: In function `main':
test.c:5: warning: return type of `main' is not `int'

Derudover: Hvordan kalder jeg funktionen test? :)
Avatar billede arne_v Ekspert
26. oktober 2003 - 12:06 #1
#include <stdio.h>

/* ovenover så den er kendt */
void test () /* void */
{
  printf ("aaaaaaaaaaaa");
}

int main () /* int ikke void */
{
  printf ("\nhej\n");
  test(); /* kalde test */
  return 0; /* return værdi til shell */
}
Avatar billede squashguy Nybegynder
26. oktober 2003 - 12:07 #2
int main(){
  printf("\nhej\n");
  test();
  return 0;
}

test(){
  printf ("aaaaaaaaaaaa");
}

--

enten smider du test() op over main, ellers skal du lave en proto-type:

test(); // smides ind oppe over main()
Avatar billede squashguy Nybegynder
26. oktober 2003 - 12:08 #3
husk også lige void test().. :)
Avatar billede dank Nybegynder
26. oktober 2003 - 12:09 #4
arne_v> Opretter du svar?

Og så siger i bare til hvis det bliver for svært for jer :)
Avatar billede arne_v Ekspert
26. oktober 2003 - 12:11 #5
svar
Avatar billede dank Nybegynder
26. oktober 2003 - 12:12 #6
takker til jer
Avatar billede dank Nybegynder
26. oktober 2003 - 12:21 #7
Og glemte vist hvorfor den kommer med fejlen under kompileringen:

linux:~/c # gcc test.c
test.c: In function `main':
test.c:5: warning: return type of `main' is not `int'
Avatar billede dank Nybegynder
26. oktober 2003 - 12:21 #8
Jeg læser det som at "det den returnerer ikke er integer", men hvorfor *skal* det være det? Eller hvad gør jeg?
Avatar billede arne_v Ekspert
26. oktober 2003 - 12:24 #9
main bør være en int funktion og returnere en værdi.

Det siger C standarden.

Og det er også nyttigt at hvis ens program køres fra et shell script kan
der testes for om programmet afsluttede OK (0) eller returnerede fejl (>0).
Avatar billede dank Nybegynder
26. oktober 2003 - 12:28 #10
ahh.. så main() bør kalde nogle funktioner, så det er funktionerne der står for eks. output.

Så i de enkelte funktioner der har med return 0; hvis funktionen blev afviklet fejlfrit? Er det korrekt forstået?

Og. så skal jeg nok lade være at poste flere dumme spørgsmål idag :)
Avatar billede arne_v Ekspert
26. oktober 2003 - 12:32 #11
Du kan selv vælge konvention mellem main og dine funktioner.

Men konventionen mellem det der kalder programmet og programmet ligger fast:
programmet laver en return (elelr exit funktions kald) med en bestemt
værdi der så bliver status udenfor.
Avatar billede bertelbrander Novice
26. oktober 2003 - 14:24 #12
Hvis man skal være pedantisk og programerer i C (og ikke C++) er der forkel på:
void test();
og
void test(void);
Det første er en prototype på en funktion der tager et uspecificeret antal argumenter og som ikke returnerer noget.
Det andet er en prototype på en funktion der ikke tager nogen argumenter og som ikke returnerer noget.

Endvidere betyder:
test(){
}
At test returnerer en int, så det er en fejl at undlade at returnere noget.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester