當使用dprintf()時,我收到警告「隱式聲明dprintf」。這往往意味着一個必要的文件不包括在內,但我已經包含了stdio.h,它應該是它所需要的。還有其他的dprintf需求嗎?dprintf隱式聲明警告
1
A
回答
3
手冊頁解釋說,要使stdio.h聲明dprintf(),您必須首先#define _POSIX_C_SOURCE 200809L
(或更高),然後才能使用#include <stdio.h>
。原因在於直到POSIX.1-2008之前dprintf()才被標準化,但是<stdio.h>
需要繼續使用之前編寫的代碼,即使代碼使用了自己的標識符「dprintf」。 (定義_GNU_SOURCE或_XOPEN_SOURCE也適用於Linux,但_POSIX_C_SOURCE是一般便攜性的最佳選擇。)
2
您可能需要設置一些宏。放在文件的頂部,在任何include
S中的以下
#define _POSIX_C_SOURCE 200809L
#define _GNU_SOURCE
(其中之一,這將是足夠的,但我不知道你用glibc的版本)的的「feature_test_macros」部分
0
您可以查找fprintf()
here。
我遇到了同樣的問題,因此我被迫在基於POSIX的機器上運行,我必須更改我的代碼,所以fprintf()
是我的許多選項之一(可能)。例如:
fprintf(stderr,"file not found");
相關問題
- 1. sprintf_s()隱式聲明警告
- 2. 警告:函數的隱式聲明'crypt_r'
- 3. C警告隱式聲明函數'exit'
- 4. 防止「警告:函數的隱式聲明」setlinebuf'...「
- 5. 警告:隱式函數聲明在C99中無效?
- 6. 如何刪除以下'隱式函數聲明'警告?
- 7. Xcode - 警告:隱式函數聲明在C99中無效
- 8. 爲什麼我會得到「隱式聲明函數'PerformXMLXPathQuery'」警告?
- 9. 警告:未知的轉換型性格 '「' 格式使用dprintf
- 10. vfork()隱式聲明
- 11. ARC警告:函數'DLOG的內隱的聲明是在C99
- 12. 本地聲明「x」隱藏實例變量xcode警告
- 13. 警告:本地聲明的'mapView'隱藏實例變量
- 14. 本地聲明隱藏實例變量警告
- 15. 如何解決編譯器警告「函數memset的隱式聲明」
- 16. 我該如何解決這個錯誤?警告:函數 'MAIN_MENU' 的隱式聲明
- 17. 如何解決警告的功能隱式聲明的目標C
- 18. 警告:聲明沒有聲明任何東西
- 19. 警告聲明中強制錯誤?
- 20. 聲明'FLAG_ACTIVITY_NO_ANIMATION'後出現NullPointerException警告
- 21. 冗餘如果聲明警告
- 22. 變量聲明警告在VS2008
- 23. C中的隱式聲明
- 24. 隱式函數聲明'usleep'
- 25. C#隱式數組聲明
- 26. 函數的隱式聲明
- 27. 函數隱式聲明'wiringPilSR'
- 28. 隱式函數聲明NSMinX
- 29. execvpe隱式聲明錯誤
- 30. 隱式函數聲明usleep
或者'#define _XOPEN_SOURCE 700'。或者'-std = gnu11'。 –
除了@JonathanLeffler的評論:'-std = gnu11'是GCC不能放在文件頂部的選項。 – deamentiaemundi