名前の先頭にアンダースコアの先頭に という名前のエントリがない場合は、_nameという形式の同義語が存在します。したがって、libcには、例えば、getoptと_getoptの両方が入っています( )。なぜlibcに同義語が含まれているのですか?
Figure 3-2: libc Contents, Names with Synonyms
__assert getdate lockf ** sleep tell **
cfgetispeed getopt lsearch strdup tempnam
cfgetospeed getpass memccpy swab tfind
cfsetispeed getsubopt mkfifo tcdrain toascii
cfsetospeed getw mktemp tcflow _tolower
ctermid hcreate monitor tcflush tsearch
cuserid hdestroy nftw tcgetattr _toupper
dup2 hsearch nl_langinfo tcgetpgrp twalk
fdopen isascii pclose tcgetsid tzset
__filbuf isatty popen tcsendbreak _xftw
fileno isnan putenv tcsetattr
__flsbuf isnand ** putw tcsetpgrp
fmtmsg ** lfind setlabel tdelete
libcのは、同義語が含まれているのはなぜ?シノニムを使用する方法
UPDATE
?私は、このように自然に同義語があったが、_getopt
でgetopt
を交換しようとしたが、彼らはもともと非標準であったためだけおそらくundefined reference to
_getopt'`
シノニムの使用方法は? –
@Je Rog:「普通の」名前がどこにでもあると思う。ヘッダーを確認してくださいが、単純な '#defined'が使われていると思います。 – rubenvb
同義語はlibcに存在し、マクロ/プリプロセッサとは関係ありません。 –