Skąd mam wiedzieć czy piszę w C++ czy w C

Witam.

Otóż za dokładnie nie wiem jak odróżnić biblioteki C++ a C :frowning:

lub na odwrót, proszę o szybką odpowiedź.

Z góry dziękuję.

Trochę dziwne pytanie. To jakbym miał zapytać “skąd mam wiedzieć czy mówie po niemiecku czy angielsku” :smiley:

Odnośnie bibliotek: przyjęto się, że biblioteki standardowe w C++ nie będą kończyły się rozszerzeniem .h (w przeciwieństwie do C)

I różnice między C a C++ dobrze opisuje angielska wikipedia: http://en.wikipedia.org/wiki/Compatibil … nd_C%2B%2B

Mały edit:

A na pytanie “skąd mam wiedzieć w czym pisze” najłatwiej odpowiedzieć “sprawdź jakiego kompilatora używasz” :slight_smile:

Używasz kompilatora C++ - piszesz w C++. C++ “dziedziczy” cechy C, więc na 90% kod C skompiluje się w C++ (choć bywają niekompatybilności, o których wspomniał hubciorz), ale kompilator potraktuje ten kod jak C++.

Chodzi oto że kiedyś skompilowałem to:

#include 

#include 

#include 


...

gdyż chciałem użyć funkcji otwarcia, modernizacji i zamknięcia plików z stdio i od razu dodałem bibliotekę stdlib skompilowałem g++ i działało.

I teraz pytam skąd po pliku mam rozpoznać czy to C czy C++.

np.

W C++ często ludzie korzystają z bibliotek GL,SDL i WinAppi,

teraz pojawiają mi się pytania:

1.Czy mogę ich użyć w C jeśli kończą się na .h ?

2.C++ obsługuje wszystkie biblioteki C i przy tym C++ ?

3.Czemu nie znalazłem plików(bibliotek) kończących się na .hpp w include w pakiecie MinGW ?

:expressionless:

a do kompilacji plików:

C używam gcc

C++ używam g++

Dodane 07.09.2013 (So) 20:02

Dzięki Razi nie spojrzałem na odp. tylko pisałem tom wykreślam 2 pytanie.

Ten kod co dałeś to C++ - używasz iostream który jest dopiero w C++. Ale pozostałe 2 biblioteki w C++ poprawnie nazywają się cstdio i cstdlib, nie stdio.h i stdlib.h.

Ja zawsze piszę w C++ i używam cstdio - scanf i printf są o wiele potężniejsze (np. własny delimiter w scanfie pozwalający czytać wiele linii za jednym zamachem) i wygodniejsze niż cin i cout.

  1. Różnic w nagłówkach nie ma, tzn. w C++ powinieneś zimportować nagłówek z C. Na odwrót - nie bardzo, w C nie ma przecież np. klas

Tak samo spod C++ wywołasz (chyba) każdą funkcję z C, bo używa tego samego ABI (interfejs binarny, specyficzny dla każdego kompilatora, więc między kompilatorami mogą być problemy z kompatybilnością).

  1. Bo tak. W C++ dla standardowych bibliotek nie używa się rozszerzeń, więc stwierdzili że to wszystko jedno.