Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German)
  • Search

[gelöst] C++: Funktionen aus string.h werden nicht erkannt

Support-Forum
Diskussionen rund um Installation, Betrieb und Anpassungen von Gentoo und dessen Paketen sowie dabei auftretenden (technischen) Problemen.
Deutsches Portal: www.gentoo.de
Post Reply
  • Print view
Advanced search
12 posts • Page 1 of 1
Author
Message
Stehan
n00b
n00b
User avatar
Posts: 16
Joined: Tue Apr 20, 2010 3:54 pm
Location: Aachen

[gelöst] C++: Funktionen aus string.h werden nicht erkannt

  • Quote

Post by Stehan » Tue Apr 20, 2010 6:42 pm

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: Select all

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: Select all

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: Select all

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: Select all

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: Select all

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.
Top
Max Steel
Advocate
Advocate
User avatar
Posts: 2324
Joined: Mon Feb 12, 2007 6:35 pm
Location: My own world! I and Gentoo!

  • Quote

Post by Max Steel » Tue Apr 20, 2010 7:04 pm

Naja eher blöder Vorschlag aber schonmal probiert string.h statt nur string einzugeben?
mfg
Steel
___________________

Heim-PC: AMD Ryzen 9 5950X, 64GB RAM, RX 9070 XT
Laptop: AMD Ryzen 5 7640U, 32GB RAM, Radeon onCPU Graphics
Arbeit-PC: AMD Ryzen 3 Pro 7335U, 16GB RAM, AMD Radeon Graphics (leider WSL2)
Top
Stehan
n00b
n00b
User avatar
Posts: 16
Joined: Tue Apr 20, 2010 3:54 pm
Location: Aachen

  • Quote

Post by Stehan » Tue Apr 20, 2010 7:13 pm

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: Select all

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.
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Tue Apr 20, 2010 8:10 pm

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

Code: Select all

#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:
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: Select all

#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.
Top
franzf
Advocate
Advocate
User avatar
Posts: 4565
Joined: Tue Mar 29, 2005 9:06 am

  • Quote

Post by franzf » Tue Apr 20, 2010 8:17 pm

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.
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Tue Apr 20, 2010 8:46 pm

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.
Top
firefly
Watchman
Watchman
Posts: 5385
Joined: Thu Oct 31, 2002 8:24 pm

  • Quote

Post by firefly » Tue Apr 20, 2010 8:51 pm

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.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Tue Apr 20, 2010 9:34 pm

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.
[bug=209239]Hier[/bug] ist ein Compilerfehler, den ein #include <stdint.h> auf einem nicht-GNU-System verursacht hat.
Top
.maverick
Apprentice
Apprentice
User avatar
Posts: 159
Joined: Thu Jan 29, 2004 4:37 pm
Location: Bonn

  • Quote

Post by .maverick » Wed Apr 21, 2010 6:21 am

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.
Top
franzf
Advocate
Advocate
User avatar
Posts: 4565
Joined: Tue Mar 29, 2005 9:06 am

  • Quote

Post by franzf » Wed Apr 21, 2010 7:18 am

.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".
Top
Stehan
n00b
n00b
User avatar
Posts: 16
Joined: Tue Apr 20, 2010 3:54 pm
Location: Aachen

  • Quote

Post by Stehan » Wed Apr 21, 2010 9:09 am

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?)
Top
franzf
Advocate
Advocate
User avatar
Posts: 4565
Joined: Tue Mar 29, 2005 9:06 am

  • Quote

Post by franzf » Wed Apr 21, 2010 9:30 am

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.
Top
Post Reply
  • Print view

12 posts • Page 1 of 1

Return to “Deutsches Forum (German)”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic