std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) ..

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
HeinzK
Establishment
Beiträge: 234
Registriert: 05.11.2009, 08:37
Benutzertext: ZwiAner
Echter Name: Heinz Kempter
Wohnort: Wald
Kontaktdaten:

std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) ..

Beitrag von HeinzK »

Eine Frage: Warum gibt es z.Bsp. 'std::sprintf' oder 'std::strlen' nicht unter Ubuntu(gcc)? Ist die STL nicht auf allen Plattformen identisch?
Oder liegt das an meiner gcc-Version?
Es ist leichter, einen Sack Flöhe zu hüten.
Benutzeravatar
Biolunar
Establishment
Beiträge: 154
Registriert: 27.06.2005, 17:42
Alter Benutzername: dLoB

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von Biolunar »

Hast du <cstdio> und <cstring> includiert?
Benutzeravatar
HeinzK
Establishment
Beiträge: 234
Registriert: 05.11.2009, 08:37
Benutzertext: ZwiAner
Echter Name: Heinz Kempter
Wohnort: Wald
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von HeinzK »

Nein, nur ..

Code: Alles auswählen

#include <stdio.h>
#include <limits.h>
#include <string>
#include <sstream>
.. aber z.Bsp. 'std::max' ist auf beiden Plattformen vorhanden.
Es ist leichter, einen Sack Flöhe zu hüten.
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von dot »

std::max kommt aus <algorithm>. Viele Standardheader inkludieren abhängig von der jeweiligen Implementierung implizit schon einige andere Header mit. Darauf kannst du dich aber nicht verlassen. Daher: <cstdio> und <cstring> inkludieren.

Btw: stdio.h und limits.h sind keine C++ Standardheader ;)
Benutzeravatar
HeinzK
Establishment
Beiträge: 234
Registriert: 05.11.2009, 08:37
Benutzertext: ZwiAner
Echter Name: Heinz Kempter
Wohnort: Wald
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von HeinzK »

Ich habe mal alle 'includes' durch ihre 'c'-Version ersetzt .. <ccomplex> macht aber unter Ubuntu(gcc) Probleme.

Code: Alles auswählen

-------------- Build: Debug in Test ---------------
Compiling: ../../../_KBasis/Basis/KArchive.cpp
In file included from /usr/include/c++/4.4/ccomplex:35,
                 from /media/C_DRIVE/Kempter/VC10/_SFML/_ZwiAnerPrj/Tests/stdafx.h:49,
                 from /media/C_DRIVE/Kempter/VC10/_KBasis/Basis/KArchive.cpp:1:
/usr/include/c++/4.4/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
Process terminated with status 1 (0 minutes, 1 seconds)
1 errors, 0 warnings (0 minutes, 1 seconds)
/usr/include/c++/4.4/ccomplex:35
Ist mein gcc (wx2.8.10) nicht aktuell genug?
PS: Aktueller Stand meiner 'includes':

Code: Alles auswählen

//#include <stdlib.h>
#include <cstdlib>
//#include <stdarg.h>
#include <cstdarg>
//#include <stdio.h>
#include <cstdio>
//#include <string>
#include <cstring>
//#include <limits.h>
#include <climits>
//#include <math.h>
#include <cmath>
#ifdef _WIN32
  #include <ccomplex>
#else  
  #include <complex>
#endif
//#include <float.h>
#include <cfloat>
#include <memory.h>
#include <malloc.h>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <algorithm>
#include <functional>
#include <vector>
#include <list>
#include <map>
Spielt die Reihenfolge eine Rolle?
Es ist leichter, einen Sack Flöhe zu hüten.
Florian Keßeler
Beiträge: 75
Registriert: 24.07.2002, 00:00
Wohnort: Bremen
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von Florian Keßeler »

Da steht doch, was das Problem ist. Du musst C++11-Support einschalten, in dem du -std=c++0x bei deinen Compilerflags mit angibst.
Benutzeravatar
HeinzK
Establishment
Beiträge: 234
Registriert: 05.11.2009, 08:37
Benutzertext: ZwiAner
Echter Name: Heinz Kempter
Wohnort: Wald
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von HeinzK »

Danke für den Hinweis .. ich bin unter Ubuntu(gcc) noch etwas auf Glatteis. Mit -std=gnu++0x hat es dann geklappt.
Hurra .. nun bin ich experimentell! 8-) (zumindest in der Linuxwelt)
Es ist leichter, einen Sack Flöhe zu hüten.
Florian Keßeler
Beiträge: 75
Registriert: 24.07.2002, 00:00
Wohnort: Bremen
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von Florian Keßeler »

Unter Visual Studio hast du auch experimentellen C++0x support aktiv, nur dass du ihn meines Wissens nach nicht extra einschalten musst...
Benutzeravatar
HeinzK
Establishment
Beiträge: 234
Registriert: 05.11.2009, 08:37
Benutzertext: ZwiAner
Echter Name: Heinz Kempter
Wohnort: Wald
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von HeinzK »

Einen sichtbaren Schalter dazu sehe ich nicht ..
Es ist leichter, einen Sack Flöhe zu hüten.
Benutzeravatar
Schrompf
Moderator
Beiträge: 5047
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: std::sprintf, std::strlen .. Windows(VS) % Ubuntu(gcc) .

Beitrag von Schrompf »

Bei Visual Studio ist der Schalter unsichtbar: ab VS10 hast Du automatisch das Bisschen an C++11, was der Compiler kann.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Antworten