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ä
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.