Tłumaczenie programu z 'troche humoru' - kruczki w C++

0

W 'trochę humoru' ktoś zapodał taki programik.

Interesuje mnie ten fragment:

main(t,_,a) char *a; 
{ 
return ...;

Co to za main? no musi to być funkcja, skoro później jest wywoływana -
C++ nie krzyczy, że main jest zastrzeżone?

Poza tym - funkcja (nawet z jedną instrukcją) nie musi mieć zawsze {} ?

No i "char *a;" jest tylko deklaracją - więc co ta funkcja robi? Nic? Ściema?

I na koniec - później jest kod w {} - ale to nie jest ciało żadnej funkcji - a o ile mi wiadomo nie może być kodu w C++ poza funkcją?

Zapewne nie znam wielu sztuczek i kruczków C++ stąd moje pytania :)

// Aż usiadłem z wrażenia, gdy to odpaliłem :) Poezja, nie programowanie :D [mf]

0

a to nie mial byc C? a to char *a to ze skladni K&R

0

Tak... K&R i to w kunsztownym połączeniu z zasadą z kompilatorów C i pierwszych C++, że można pominąć pierwszy człon deklaracji (czegokolwiek, oprocz zmiennych), jeśli jest nim int...

To jest piękne... Dzieło sztuki stosowanej... ;)

0

a to nie mial byc C? a to char *a to ze skladni K&R
Można coś więcej? W sumie nigdy nie pisałem w czystym C - nie znam rzeczy, których C++ nie ma...

0

a to nie mial byc C? a to char *a to ze skladni K&R
Można coś więcej? W sumie nigdy nie pisałem w czystym C - nie znam rzeczy, których C++ nie ma...

C odziedziczyl po swoich tworcach skladnie K&R, w ktorych wlasnie tak wygladaly deklaracje argumentow formalnych funkcji, np:

int funkcja(a, b, c)
char *a, *b, *c;
{
//i tu cialo
}

do tego dochodzi jeszcze to co napisal Krecik, czyli, ze domyslnym typem jest int (w C++ to juz jest void)
i z tego wszystkiego funkcja

 main()

to funkcja int main(int, int, char *)

0

wytłumacze ci to łopatologicznie :

main(argc,argv)char** argv; // argc jest domyslnie int, wiec nie trzeba uscislac typu
{
return 32767; // no bo funkcja tez domyslnie jest typu int :]
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1