Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: K&R C funktion parametrit

nörtti [06.11.2011 12:03:05]

#

Minulla on ongelma vanhan(v. 1991) C kääntäjän(ACK) kanssa. Olen yrittänyt kääntää erästä omaa tiedonsiirto-ohjelmaa joka mahdollistaisi tiedostojen siirtämisen MacMINIX boxilleni. Seuraava koodi aiheuttaa ongelmia.

int main(int argc, char *argv[]) {

Virheilmoitukset voi nähdä http://fpaste.dy.fi/C7n (kuva otettu emulattorilla koska en saanut hyvää kuvaa CRT näytöstä.) Tietäisikö joku miten funktion parametrit saadaan määriteltyä K&R C:ssä

Pekka Karjalainen [06.11.2011 12:48:12]

#

Tämä ohjelma kelpaa yhä gcc-kääntäjälle. Se varoittaa vain puuttuvasta int-sanasta ennen mainia, jos käännän -Wall-asetuksen kanssa.

main(argc, argv)
	int argc;
	char* argv[];
{
	int i;
	for (i=0; i<argc; i++)
		printf("%s\n", argv[i]);
	return 0;
}

Huomaa, että mainin palautusarvo on int, koska sitä ei ole annettu. Myös argc-parametrin esittelyn voisi jättää pois, koska siitä tulisi silloin oletuksena tyyppiä int. Tämä ei ole hyödyllinen kikka itse tehdä, mutta sitä näkee joskus vanhassa koodissa, joten se on syytä tietää.

Nimet laitetaan siis kaarisulkujen väliin. Sen jälkeen on tyyppien ja nimien luettelo ennen aaltosulkua. Samantyyppisiä esittelyjä voi yhdistää pilkuilla kuten yleensäkin.

vuokkosetae [16.11.2011 14:37:11]

#

Voisko olla rivinvaihto merkistä kyse? C:ssä sen ei pitäisi vaikuttaa ja vieremällä pitäisi olla alko. Toinen on, että tuo on kirjoitettu jollain UTF-8:lla ja siellä on hassuja merkkejä verrattuna tuohon UNIX boksiin verrattuna. Noiden kyllä pitäisi olla ASCII yhteensopivia.

Kokeile kääntää ihan

int main(int argc, char *argv[]) {
  return 0;
}

ohjelma. Muistaakseni tuota jotkin configuret käyttävät pällitestinä kääntäjälle. Ja kokeile ensin kirjoittaa se tuossa boksissa ja sitten siirtää toisaalta niin merkistöongelma selvinnee toivottavasti.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta