私は現在、独自のバージョンのgetopt()関数を作成しようとしています。 しかし、文字型をint型として返す方法はわかりません。unistd.hライブラリのgetopt()関数
getopt()関数のソースコードを調べる方法はありますか? glibc
で
私は現在、独自のバージョンのgetopt()関数を作成しようとしています。 しかし、文字型をint型として返す方法はわかりません。unistd.hライブラリのgetopt()関数
getopt()関数のソースコードを調べる方法はありますか? glibc
で
getopt()
のソースコードはここにある:もちろんhttps://github.com/lattera/glibc/blob/master/posix/getopt.c
そこにあなたが見るかもしれない多くの実装がありますが、これはおそらく、最も人気の一つです。ここではFreeBSDから、別です:https://github.com/lattera/freebsd/blob/master/lib/libc/stdlib/getopt.cは
getopt(3)
関数の戻り値は、(それが返すすべての可能char
秒の間隔)余分な値は、オプションの条件の終わりをマークする可能にするためにint
です。この特別な値はEOF
(getchar(3)
関数のように)であり、可能な値はchar
とは異なる必要があります。これと異なるCコンパイラの可能性に対処するため
のいずれかsigned
又はunsigned
としてchar
を実装し、両方の機能をするすべての負の値をマッピングすることにより(255
に0
からunsigned byte
として文字値として戻り値を実装します正の場合、これは負の値に定数256
を追加しています---言語は正確にこれがどのように指定されているのかを指定していないので、これは一例です---ネガは128..255
の範囲に入ります)、EOF
を値は-1
です。
あなたがEOF
のために使用されているどのような値をチェック(最も可能性が-1
である)、その後、値がデフォルトchar
タイプドン」の返されて、それを実装するだけで、あなたのシステムの標準Cライブラリに統合するgetopt(3)
機能を作成する場合/との競合/オーバーラップ。
特別なことはありません。 int f = 'a'; char c = 'a'; int i = c;それはすべて暗黙の変換によって機能します。 – nos
ソースコードは自由に利用可能です –
「int型として文字型を返す方法」これには何が問題なのですか?文字は小さな整数です。 –