Aktywne Wpisy
Gupiutki +12
kocham jeść chipsy, wydaje mi się, że nigdy z tego nie wyrosnę, chipsy są dla mnie lekarstwem na całe zło, siedzisz sobie, chrupiesz i jest zajebiście. Jakie chipsy kochacie najbardziej?

Glacial +39
Uwaga, uwaga
Smartgasm dodał nowy film.
Powtarzam - smartgasm dodał nowy film.
#youtube #nauka #ciekawostki #smaftgasm
Smartgasm dodał nowy film.
Powtarzam - smartgasm dodał nowy film.
#youtube #nauka #ciekawostki #smaftgasm

![Motorniczy dostał pięścią w twarz. Zareagował na p-----c na przystanku [VIDEO]](https://wykop.pl/cdn/c3397993/c325b0049a6a4a8662cc75990f2c58c04ea0b97549587ac260933fe8eb9f8f8f,q80.jpg)




Od przedszkola uznawałem C za język użyteczny na równi z brainfuckiem czy lolcodem. Konieczność oglądania plików, których nazwy zakończone są sufiksem ".c" zawsze wywołuje u mnie zimne poty i senne koszmary przez wiele kolejnych nocy. Niestety czasem jednak zdarza się, że to ja wylosuję najkrótszą zapałkę i muszę zaglądać w niezbadane czeluście sterowników pisanych przez hindusów. Kontakty z C zawsze są dla mnie pouczające i o tym dziś chciałem napisać.
konkrety
W języku C, w przeciwieństwie do C++ (który trzeba szanować!) deklaracja funkcji nie jest równoznaczna z jej prototypem, co może prowadzić do bardzo nieprzyjemnych konsekwencji. Zamiast jednak opowiadać dalej, zaprezentuję przykład (w spojlerze bo monospace daje).
static int fun();
int main(int argc, char ** argv)
{
int a=fun(10.0);
printf("%d\n", a);
return 0;
}
int fun( char *arg1, int *arg2 )
{
return *arg2;
}
O dziwo takie coś kompiluje się bez zająknięcia (do momentu jak nie damy aby brak prototypów rzucał warnami. Rezultaty działania proszę sobie na własną odpowiedzialność sprawdzić.
zakończenie
Krótko dlaczego tak jest - deklaracja sprawia, że cała rodzina funkcji, o nazwie fun będzie dla nas dostępna. Korzystamy sobie z niej więc do woli w mainie. Dopiero potem podając definicję podajemy prototyp - niby nie pasuje do tego co w mainie zostało wywołane, no ale cóż, już troszkę za późno. Drugi argument, zwracany przez funkcję nigdy nie został przekazany, więc pojawią się śmieci.
#programowanie #cpp #c99
@badasq: No chyba sobie żartujesz. Jest dokładnie na odwrót.
a C to zuo, tylko c++
(...), czyli dowolną liczbę argumentów dowolnego typu. Jeśli funkcja ma nieprzyjmować argumentów to należy
EDIT: no, żeby być dokładnym to ten konstruktor może być też z parametrami z wartościami domyślnymi.
MyClass. Ba dum tsss! C++ jest językiem kontekstowym, a dla języka programowania, jak wszyscy wiemy, to wielkie:
źródło: comment_RsC2nFUsJGGJ1xy6lBudEwFYE4pSI1eJ.jpg
PobierzAkurat dla mnie, jak to nazwałeś "kontekstowość" nie jest wadą. Kompilator czy normalne ide pozwalają tutaj wszystko ogarniać bez żadnych problemów czy wątpliwości.
ps. gdybyś podał kontekst to bez problemu bym na to odpowiedział, nawet pod tym tagiem był temat poruszany, więc słabo...
C++ nawet nie ma sensownego systemu modułów tylko hacki na inkludach i pierdyliard różnych systemów budowania. Jak używasz w projekcie 10 bibliotek z 4 różnymi systemami budowania, to konfiguracja IDE tak, żeby sparsował źródła poprawnie, i dało się ctrl+kliknięciem chodzić po
class MyClass {
void operator()()
wywołujesz funkcję foo zadeklarowaną 3 linijki wyżej i zdefiniowaną pod mainem.
Ja nie znam C - do czego się przyznaję, ale ty najwidoczniej nie znasz c++