2017-05-02 25 views
0

私は現在、独自のバージョンのgetopt()関数を作成しようとしています。 しかし、文字型をint型として返す方法はわかりません。unistd.hライブラリのgetopt()関数

getopt()関数のソースコードを調べる方法はありますか? glibc

+2

特別なことはありません。 int f = 'a'; char c = 'a'; int i = c;それはすべて暗黙の変換によって機能します。 – nos

+1

ソースコードは自由に利用可能です –

+0

「int型として文字型を返す方法」これには何が問題なのですか?文字は小さな整数です。 –

答えて

1

getopt(3)関数の戻り値は、(それが返すすべての可能char秒の間隔)余分な値は、オプションの条件の終わりをマークする可能にするためにintです。この特別な値はEOFgetchar(3)関数のように)であり、可能な値はcharとは異なる必要があります。これと異なるCコンパイラの可能性に対処するため

のいずれかsigned又はunsignedとしてcharを実装し、両方の機能をするすべての負の値をマッピングすることにより(2550からunsigned byteとして文字値として戻り値を実装します正の場合、これは負の値に定数256を追加しています---言語は正確にこれがどのように指定されているのかを指定していないので、これは一例です---ネガは128..255の範囲に入ります)、EOFを値は-1です。

あなたがEOFのために使用されているどのような値をチェック(最も可能性が-1である)、その後、値がデフォルトcharタイプドン」の返されて、それを実装するだけで、あなたのシステムの標準Cライブラリに統合するgetopt(3)機能を作成する場合/との競合/オーバーラップ。