Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[gelöst] C++: Funktionen aus string.h werden nicht erkannt
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
Stehan
n00b
n00b


Joined: 20 Apr 2010
Posts: 16
Location: Aachen

PostPosted: Tue Apr 20, 2010 6:42 pm    Post subject: [gelöst] C++: Funktionen aus string.h werden nicht erkannt Reply with quote

Hallo Forumsmitglieder,

ich hoffe, daß ich an dieser Stelle richtig bin, ich weiß keinen anderen Ausweg mehr.

Zunächst mein Problem:

Ein primitives C++-Programm, eingegeben im Emacs:
#include <string>
using namespace std;

int main()
{
string a,b; // werden noch mit irgendeinem Inhalt belegt
strncpy(a,b,laenge);
return 0;
}

Aufgabe: dieses Beispiel-Programm soll auf der Konsole mit g++ kompiliert werden. Bis vor etwa sieben Monaten funktionierte das bei mir überall wunderbar. Nach einer größeren Update-Aktion auf meinem Desktop (AMD64), kommt nun immer die Meldung:

"Fehler >>strncpy<< wurde in diesem Gültigkeitsbereich nicht definiert"

Da habe ich mir gedacht, ich hätte irgendwas einfach nur zu leichtgläubig einstellen lassen.
Mittlerweile macht mein Notebook, ebenfalls AMD64 genau das gleiche. Ein paralleles OpenSuSE (64Bit) rauscht mit g++ einfach drüber und baut die Datei, ältere x86-Gentoos bauen auch brav was ich ihnen vorsetze.

Daraus ergeben sich für mich gleich ettliche Fragen, wie z.B.:

Kann ich davon ausgehen, daß string.h und die darin enthaltenen String-Funktionen auch in Gentoo-Paketen genutzt werden? - Ich nehme an, daß ja.
Diese werden ordentlich gebaut.

Wo kann man sich denn die Einstellungen rund um den GCC/G++ so verstellen, daß er die Funktionen nicht findet. In /usr/include/string.h steht ja auch strncpy mit drin. Deshalb erwarte ich, daß er zumindest bis undefined reference strncpy kommen sollte.

Hier noch ein paar Angaben, ich bete daß irgendwer über irgendwas stolpert, was falsch ist, oder eine Idee hat, wo man noch nachschauen müßte.

Notebook (Thinkpad T61):
Code:
stephan@lap6 /home/stephan $ emerge --info
Portage 2.1.7.17 (default/linux/amd64/10.0, gcc-4.3.4, glibc-2.10.1-r1, 2.6.32-tuxonice-r5 x86_64)
=================================================================                                 
System uname: Linux-2.6.32-tuxonice-r5-x86_64-Intel-R-_Core-TM-2_Duo_CPU_T7100_@_1.80GHz-with-gentoo-1.12.13
Timestamp of tree: Thu, 08 Apr 2010 10:45:01 +0000                                                         
ccache version 2.4 [enabled]                                                                               
app-shells/bash:     4.0_p37                                                                               
dev-java/java-config: 2.1.10                                                                               
dev-lang/python:     2.6.4-r1                                                                               
dev-util/ccache:     2.4-r7                                                                                 
dev-util/cmake:      2.6.4-r3                                                                               
sys-apps/baselayout: 1.12.13                                                                               
sys-apps/sandbox:    1.6-r2                                                                                 
sys-devel/autoconf:  2.13, 2.63-r1                                                                         
sys-devel/automake:  1.8.5-r3, 1.9.6-r2, 1.10.3                                                             
sys-devel/binutils:  2.18-r3
sys-devel/gcc:       4.3.4
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6b
virtual/os-headers:  2.6.30-r1
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=nocona"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests ccache distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo ftp://linux.rz.ruhr-uni-bochum.de/gentoo-mirror/ ftp://ftp.join.uni-muenster.de/pub/linux/distributions/gentoo ftp://ftp.join.uni-muenster.de/pub/linux/distributions/gentoo ftp://de-mirror.org/distro/gentoo/ ftp://mirror.netcologne.de/gentoo/ "
LANG="de_DE"
LC_ALL="de_DE@euro"
LDFLAGS="-Wl,-O1"
LINGUAS="de"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="   "
SYNC="rsync://172.16.0.1/gentoo-portage"
USE="X acl acpi alsa amd64 apache2 arts bash-completion berkdb bluetooth branding bzip2 cdparanoia cdr cli cracklib crypt cups cxx dbus dga directfb dri dts dvb dvd emacs examples exif fbcon ffmpeg firefox fontconfig fortran gdbm geoip gif gimp glut gnome gpm gps gtk hal hddtemp htmlhandbook iconv ieee1394 imap ipv6 jabber java javascript jingle jpeg jpeg2k kde laptop latex lm_sensors lzo maildir mikmod mime mjpeg mmx mng modules mp3 mpeg mssql mudflap multilib mysql nas ncurses nls nptl nptlonly nsplugin ogg opengl openmp oscar pam pcmcia pcre pdf perl php png ppds pppd pulseaudio python qt4 quicktime raw rdesktop readline reflection rss samba session smartcard speex spell spl sse sse2 ssl svg sysfs syslog tcpd truetype unicode usb v4l vcd vnc vorbis wifi wmf xine xinetd xorg xv xvid zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="intel"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS


Code:
stephan@lap6 /home/stephan $ g++ -v
Es werden eingebaute Spezifikationen verwendet.
Ziel: x86_64-pc-linux-gnu
Konfiguriert mit: /var/tmp/portage/sys-devel/gcc-4.3.4/work/gcc-4.3.4/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.4 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.4 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.4/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.4/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --disable-libgcj --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.3.4 p1.1, pie-10.1.5'
Thread-Modell: posix
gcc-Version 4.3.4 (Gentoo 4.3.4 p1.1, pie-10.1.5)


Auf meinem größeren PC (Homeserver,Eigenbau)
Code:
stephan@serv ~ $ emerge --info                                                                                                                                                     
Portage 2.1.7.17 (default/linux/amd64/10.0, gcc-4.3.4, glibc-2.10.1-r1, 2.6.31-gentoo-r6 x86_64)                                                                                   
=================================================================                                                                                                                   
System uname: Linux-2.6.31-gentoo-r6-x86_64-AMD_Athlon-tm-_64_X2_Dual_Core_Processor_5000+-with-gentoo-1.12.13                                                                     
Timestamp of tree: Thu, 08 Apr 2010 10:45:01 +0000                                                                                                                                 
distcc 3.1 x86_64-pc-linux-gnu [disabled]                                                                                                                                           
ccache version 2.4 [enabled]                                                                                                                                                       
app-shells/bash:     4.0_p37                                                                                                                                                       
dev-java/java-config: 2.1.10                                                                                                                                                       
dev-lang/python:     2.6.4-r1                                                                                                                                                       
dev-util/ccache:     2.4-r7                                                                                                                                                         
dev-util/cmake:      2.6.4-r3                                                                                                                                                       
sys-apps/baselayout: 1.12.13                                                                                                                                                       
sys-apps/sandbox:    1.6-r2                                                                                                                                                         
sys-devel/autoconf:  2.13, 2.63-r1
sys-devel/automake:  1.4_p6, 1.8.5-r3, 1.9.6-r2, 1.10.3
sys-devel/binutils:  2.18-r3
sys-devel/gcc:       4.3.4
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6b
virtual/os-headers:  2.6.33
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/X11/xkb /usr/share/config /var/bind /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=athlon64 -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="assume-digests ccache distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo ftp://ftp.snt.utwente.nl/pub/os/linux/gentoo ftp://linux.rz.ruhr-uni-bochum.de/gentoo-mirror/ ftp://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/ ftp://mirror.switch.ch/mirror/gentoo/ "
LANG="de_DE"
LC_ALL="de_DE"
LDFLAGS="-Wl,-O1"
LINGUAS="de"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/games /usr/local/portage/layman/gamerlay /usr/local/portage/layman/sping /usr/local/portage/layman"
SYNC="rsync://10.0.0.1/gentoo-portage"
USE="X acl acpi alsa amd64 ao bash-completion berkdb bzip2 cdda cdparanoia cli cracklib crypt cups cxx dbus dri dvd dvdr emacs fortran gdbm gimp gpm gtk hal iconv ipv6 java javascript jpeg kde maildir mmx modules mp4 mpeg mplayer mudflap multilib mysql ncurses nls nptl nptlonly nsplugin ogg openal opengl openmp pam pcre perl png pppd pulseaudio python qt4 quicktime rdesktop readline reflection session spl sse sse2 ssl sysfs tcpd tiff unicode usb vorbis xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" FRITZCAPI_CARDS="fcpci" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de" LIRC_DEVICES="hauppauge" MISDN_CARDS="avmfritz hfcpci" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nvidia"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS


Code:
stephan@serv ~ $ g++ -v
Es werden eingebaute Spezifikationen verwendet.
Ziel: x86_64-pc-linux-gnu
Konfiguriert mit: /var/tmp/portage/sys-devel/gcc-4.3.4/work/gcc-4.3.4/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.4 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.4 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.4/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.4/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --disable-libgcj --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.3.4 p1.1, pie-10.1.5'
Thread-Modell: posix
gcc-Version 4.3.4 (Gentoo 4.3.4 p1.1, pie-10.1.5)


Beide laufen exakt auf dem gleichen Portage-Tree, alle Pakete sind auf dem aktuellen Stand des Trees.

Ich halte mich eigentlich nach einigen Gentoo-Jahren und noch mehr Linux-Jahren nicht für einen absoluten Neuling, aber irgendwas scheine ich doch noch nicht ganz begriffen zu haben, es funktioniert einfach nicht.

Es funktioniert keine Funktion, die
Code:
man string.h
liefert. Alle sind unbekannt.

Google ist an dieser Stelle auch kein wirklich guter Partner, oder vielleicht bin ich auch nur zu dumm dazu. string.h mit einer Funktion zu googlen ist sehr erbauend. Auch die Angabe der Fehlermeldung liefert nur Antworten, bei denen herauskommt, daß man die string.h einbinden muß. Ich habe früher gelernt, daß man bei C++ die STL-Libs ohne .h einbindet, unser Prof hat uns dann immer etwas über Forwardings und Pseudo-Headers erzählt. Binde ich explizit <string.h> ein, kommen noch mehr fehler und zwischen der 20. und 30. Meldung ist auch die Meldung von oben dabei.

Hat irgendwer sowas schonmal beobachtet oder kann mir sagen, wo ich noch nachgucken oder testen könnte?

Es kann doch nicht sein, daß mein Computer nur von mir keine String-Funktionen mehr annimmt.

Vielen Dank an jeden, der diesen ganzen Text liest und sich Gedanken macht. Besonderen Dank schonmal im Voraus an jeden, der da noch eine hilfreiche Idee hat und sie mit mir teilt.

Stephan Hansen


Last edited by Stehan on Wed Apr 21, 2010 10:48 am; edited 1 time in total
Back to top
View user's profile Send private message
Max Steel
Advocate
Advocate


Joined: 12 Feb 2007
Posts: 2040
Location: My own world! I and Gentoo!

PostPosted: Tue Apr 20, 2010 7:04 pm    Post subject: Reply with quote

Naja eher blöder Vorschlag aber schonmal probiert string.h statt nur string einzugeben?
_________________
mfg
Steel
___________________
Sorry for my bad English.

Heim-PC: Intel i7-5820K, 32GB RAM, GTX 1080
Laptop: Intel Core i5-4300U, 16GB RAM, Intel Graphic
Arbeit-PC: Intel i5-3470S, 16GB RAM, Intel Graphic
Back to top
View user's profile Send private message
Stehan
n00b
n00b


Joined: 20 Apr 2010
Posts: 16
Location: Aachen

PostPosted: Tue Apr 20, 2010 7:13 pm    Post subject: Reply with quote

Naja, blöde Idee ist relativ. Zumindest war sie nicht so blöd, daß ich mich geweigert habe. Außerdem bin ich ja schon erstaunt, wie schnell es mit Antworten klappt. :-)

Die eingebundene <string.h> (mit .h) ergab eine menge von Fehlermeldungen:

In diesem einfachen Beispiel ergibt das:

Code:
Fehler: >> string<< wurde in diesem Gültigkeitsbereich nicht definiert. (2x)
Fehler: >>strncpy<< wurde in diesem Gültigkeitsbereich nicht definiert.


Es gibt allerdings keine Fehlermeldung, daß die string.h nicht gefunden würde.
Back to top
View user's profile Send private message
firefly
Advocate
Advocate


Joined: 31 Oct 2002
Posts: 4459

PostPosted: Tue Apr 20, 2010 8:10 pm    Post subject: Reply with quote

Du brauchst beide header
<string> für den typ string
<tring.h> für strncpy

Code:
#include <string.h>
#include <string>
using namespace std;

int main()
{
int laenge = 0; // noch mit sinvollen länge füllen
string a,b; // werden noch mit irgendeinem Inhalt belegt
strncpy(a,b,laenge);
return 0;
}


aber da du die string classe von der std-lib verwendest funktioniert dass nicht mit strncpy:
Quote:
g++ main.cpp
main.cpp: In function »int main()«:
main.cpp:9: Fehler: »std::string« kann nicht nach »char*« für Argument »1« nach »char* strncpy(char*, const char*, size_t)« umgewandelt werden


da du anscheinen nur die ersten x zeichen vom einen string in den anderen kopieren möchtest funktioniert das mit std::string so:

Code:
#include <string>
using namespace std;

int main()
{
int laenge = 0; // noch mit sinvollen länge füllen
string a,b; // werden noch mit irgendeinem Inhalt belegt
b = a.substr(0, laenge);
return 0;
}

_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4408

PostPosted: Tue Apr 20, 2010 8:17 pm    Post subject: Reply with quote

firefly wrote:
Du brauchst beide header
<string> für den typ string
<string.h> für strncpy

Und da er C++ programmieren will und nicht C sollte er auch "cstring" includen!
Der Standard verbietet es string.h zu includieren ;)
Gilt nicht nur für string.h, sondern auch für ctype.h, math.h usw. eben alle C-Header.
Back to top
View user's profile Send private message
firefly
Advocate
Advocate


Joined: 31 Oct 2002
Posts: 4459

PostPosted: Tue Apr 20, 2010 8:46 pm    Post subject: Reply with quote

franzf wrote:
firefly wrote:
Du brauchst beide header
<string> für den typ string
<string.h> für strncpy

Und da er C++ programmieren will und nicht C sollte er auch "cstring" includen!
Der Standard verbietet es string.h zu includieren ;)
Gilt nicht nur für string.h, sondern auch für ctype.h, math.h usw. eben alle C-Header.

meinen 2. Teil des posts nicht gelesen?
Da er hier std::string verwenden möchte braucht er für sein beispiel überhaupt keine "C-Header" ;)
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
firefly
Advocate
Advocate


Joined: 31 Oct 2002
Posts: 4459

PostPosted: Tue Apr 20, 2010 8:51 pm    Post subject: Reply with quote

franzf wrote:

Und da er C++ programmieren will und nicht C sollte er auch "cstring" includen!
Der Standard verbietet es string.h zu includieren ;)

Es ist richtig, dass man besser den c++ header von string.h verwenden soll, da dieser die c-string manipulations methoden in den namspace std packt.
Aber wo steht das, dass das includieren von string.h in c++ code verboten ist? Ich habe nur referenzen gefunden, dass string.h in c++ als depricated markiert ist aber nicht forbidden.
_________________
Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn.
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6281

PostPosted: Tue Apr 20, 2010 9:34 pm    Post subject: Reply with quote

firefly wrote:
Aber wo steht das, dass das includieren von string.h in c++ code verboten ist? Ich habe nur referenzen gefunden, dass string.h in c++ als depricated markiert ist aber nicht forbidden.

Hier ist ein Compilerfehler, den ein #include <stdint.h> auf einem nicht-GNU-System verursacht hat.
Back to top
View user's profile Send private message
.maverick
Apprentice
Apprentice


Joined: 29 Jan 2004
Posts: 159
Location: Bonn

PostPosted: Wed Apr 21, 2010 6:21 am    Post subject: Reply with quote

Aber das liegt tatsächlich daran, dass weder stdint.h noch ein (hypothetisches) cstdint zum C++98- bzw. 03-Standard gehören und IIRC auch nicht im TR1 sind. Deshalb ist stdint.h einfach illegal in C++. string.h und Konsorten hingegen sind Teil des C++-Standards und damit auf jeden Fall vorhanden (das wird alleine aus Kompatibilitätsgründen wohl auch so bleiben), sollten aber dennoch nicht verwendet werden weil globale (sprich: nicht-namespace) Funktionen, vor allem sowas allgemeines wie memcpy Ärger machen können.
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4408

PostPosted: Wed Apr 21, 2010 7:18 am    Post subject: Reply with quote

.maverick wrote:
Aber das liegt tatsächlich daran, dass weder stdint.h noch ein (hypothetisches) cstdint zum C++98- bzw. 03-Standard gehören und IIRC auch nicht im TR1 sind.

Wenigstens bei meinem GCC-4.4.3 liegt ein cstdint im tr1. In C++0x gibt es ihn aber definitiv.

Und dass die <*.h>-C-Header nicht wirklich verboten sind sollte mein ";)" signalisieren. Es steht auch im Standard, dass die Dinger eigentlich nur noch aus Kompatibilitätsgründen mitgeliefert werden und deprecated (missbilligt, abgelehnt) sind. Also kurz "böse".
Back to top
View user's profile Send private message
Stehan
n00b
n00b


Joined: 20 Apr 2010
Posts: 16
Location: Aachen

PostPosted: Wed Apr 21, 2010 9:09 am    Post subject: Reply with quote

Ich bin wirklich beeindruckt!

Erstmal hallo alle zusammen und vielen Dank für die erstaunlich aktive Diskussion inklusive der Lösung.

Das Thema darf somit als erledigt betrachtet werden und ich wundere mich noch bißchen, leise vor mich hin, warum es unter anderen Umgebungen oder zu anderen Zeiten noch funktionierte. Auf jeden Fall bin ich jetzt glücklich, der beschriebene Weg funktioniert tatsächlich und ein bißchen beschämt, daß ich nicht selbst drauf gekommen bin sondern das Gentoo-Forum damit belästigt habe, bin ich auch.

Nochmals vielen herzlichen Dank!

Stephan

(Sorry, brauche schon wieder Hilfe: Wie markiert man das ganze als glöst?)
Back to top
View user's profile Send private message
franzf
Advocate
Advocate


Joined: 29 Mar 2005
Posts: 4408

PostPosted: Wed Apr 21, 2010 9:30 am    Post subject: Reply with quote

Stehan wrote:
(Sorry, brauche schon wieder Hilfe: Wie markiert man das ganze als glöst?)

Wie alles imm Leben ist irgendwann immer das erste Mal, wenn man sich da noch gleich auskennt braucht man sich nicht zu entschuldigen :P Gilt natürlich auch fürs Programmieren - weshalb du dich nicht schämen musst.

Geh bei deinem Anfangspost auf "edit" und füg im Titel ein "[gelöst]" oder sonstwas vorne dran.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum