5

私はGCC 4.6.0を使用しています(それ以外の場合は未確認のプラットフォームで)。

crypt()パスワードを暗号化する機能を使用しています。

私はこれまでその機能を使用したことがないので、メインページをチェックアウトしました。

man 3 crypt

unistd.hそして、ヘッダーを含めるように言います。

cryptただし、それを行うと、関数に対する暗黙の警告が表示されました。

warning: implicit declaration of function ‘crypt’ [-Wimplicit-function-declaration]

少し検索したところ、 を含める必要があることがわかりましたcrypt.h。しかし、どうしてマニュアルページにそう書かれていないのでしょうか?

4

2 に答える 2

3

私のマニュアルページにも#define _XOPEN_SOURCE(を含める前に) と書かれています。unistd.hしたがって、おそらくそれを追加して、の宣言を公開する必要がありcryptます。

編集

試してみました。トリックを実行する前にunistd.h 含め ます。#define _XOPEN_SOURCEそれを含めるだけでは十分ではありません。

使用する

gcc version 4.6.0 20110429
GNU C Library stable release version 2.13

調べてunistd.h

/* XPG4.2 specifies that prototypes for the encryption functions must
   be defined here.  */
#ifdef  __USE_XOPEN
/* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
extern char *crypt (__const char *__key, __const char *__salt)
     __THROW __nonnull ((1, 2));
于 2011-05-25T16:45:20.920 に答える