Ihr System hat wahrscheinlich die C-Header an einer Stelle im Dateisystem und die C++ - Header in einer anderen. Kennen Sie die tatsächliche Liste der Verzeichnisse, die nach Systemkopfzeilen durchsucht werden? (Eigentlich muss die Implementierung keine System-Header-Dateien haben, obwohl alle, mit denen ich vertraut bin, tun. Der C++ - Standard hat Anforderungen, was die Anweisung #include <cmath>
zu tun hat, aber nicht, wie es gemacht werden muss.)
In Ihrer Antwort sprechen Sie über Variationen zwischen C++ unter Linux und Windows. Diese sind nicht betriebssystemspezifisch, sondern umsetzungsspezifisch. Sie verwenden wahrscheinlich Visual C++ unter Windows und etwas anderes unter Linux (nur weil VC++ nur unter Windows läuft). Sie können in Standardkonfigurationen anders funktionieren.
In der Tat sollte #include <math.h>
wie #include <cmath>
sein, außer dass math.h alle seine Funktionsnamen und solche in den Namespace std :: verschieben sollte. Wenn dies in Ihrem Linux C++ System nicht geschieht, liegt ein Problem vor. Leider haben Sie nicht genug Informationen zur Verfügung gestellt, um herauszufinden, was passiert.
In Linux, werden Sie fast immer es bei /usr/include/math.h finden. Bist du sicher, dass es nicht da ist? Es ist als Teil der Glibc oder Glibc-Header-Pakete auf vielen Distributionen installiert. – jmanning2k