c prefix i *.h

0

Witam,
zastanawia mnie czy:

#include<cmath>

i

#include<math.h>

robią to samo? Gdzieś wyczytałem, że druga wersja jest z c i definiuje coś globalnie, a pierwsza w przestrzeni nazw. Ale niestety wiem tylko tyle.

Zastanawia mnie też czemu jak się dołącza np:

#include<iostream>

to pomija się ".h" oraz czym różni się zapis:

#include "cos.h" 

od

#include <cos.h> 

Pozdrawiam

1

@Błędzący
math.h to nagłówek z C a cmath to nagłówek z C++
include z "" szuka w katalogu projektu nagłówka do zalączenia a z <> szuka w naglówkach w ścieżce do zainstalowanych bibliotek

0

Dziękuję wam obojgu. Z linku wyłuskałem, że:

Including cstdio imports the symbol names in std namespace and possibly in Global namespace.
Including stdio.h imports the symbol names in Global namespace and possibly in std namespace.

co mnie przekonuje do użycia wersji z .h.

1

ale po co ci te funkcje w globalnej przestrzeni nazw, po to wymyślili nagłówki bez .h żeby używały przestrzeni std::.

Robisz tak:

#include <cmath>
#include <iostream>
using namespace std;

i używasz wszystkich funkcji bez konieczności pisania std::.

oraz czym różni się zapis:
#include "cos.h"
od
#include <cos.h>

<cos.h> jest nagłówkiem systemowym, a "cos.h" jest nagłówkiem należącym do twojego projektu. upraszczam, ale taka jest generalna zasada.

Zastanawia mnie też czemu jak się dołącza np:
#include<iostream>
to pomija się ".h"
Bo tak sobie wymyślili, że ten nagłówek ma się nazywać iostream a nie iostream.h. Równie dobrze mogliby nazwać aaa.iostream.bbb ale wtedy też byś się pytał dlaczego tak :-)

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