Clang/LLVMとGCCの両方がこの警告を表示します。私は、多くの機能を使用するためにヘッダーを含める必要があることを認識していますが、ファイルの先頭にstdio.h
が含まれています。同じヘッダーの他の機能(例:setbuf()
)を使用していますが、これらは正常に動作します。ヘッダーインクルードを削除すると、これらの他の関数のエラーと警告が予想どおりにスローされます。警告:暗黙的に関数 'setlinebuf' ...の宣言を防止する
添付ファイルを表示するのにclang -MD -MF
を使用し、setlinebuf()
のプロトタイプを含む/usr/include/stdio.h
をチェックしました。 unix.h
というオンラインのリファレンスが1つ見つかりましたが、これは私のシステムには存在しません。
私はLubuntu 16.10 x86_64、Clang 3.8.1を使用しています。
View sourceは:1行目にあり、ライン32
この機能には、適切な機能テストマクロを使用する必要があります。 'man setlinebuf'を参照してください。 – BadZen
...(http://man7.org/linux/man-pages/man3/setlinebuf.3.html)は、インクルードの前に' #define _BSD_SOURCE'を追加してライブラリに伝えますBSD機能( 'setlinebuf()'が1つ)を必要とするヘッダファイル。 –
は、次の文を含む 'setlinebuf()'のマニュアルページを読むことをお勧めします: 'glibcの機能テストマクロ要件(feature_test_macros(7)参照): setbuffer()、setlinebuf():_BSD_SOURCE' – user3629249