當使用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. 警告:隱式聲明
- 2. sprintf_s()隱式聲明警告
- 3. 警告:函數的隱式聲明'crypt_r'
- 4. GLFW3:警告:隱式聲明函數「glGenBuffers」
- 5. 警告:函數的隱式聲明TableCreate
- 6. 警告:函數隱式聲明
- 7. 警告:隱式聲明的錯誤
- 8. C警告隱式聲明函數'exit'
- 9. 警告:「索引」的聲明隱藏了全局聲明
- 10. 隱式聲明警告:什麼是內置函數?
- 11. 爲什麼我會得到「隱式聲明函數'PerformXMLXPathQuery'」警告?
- 12. 警告:隱式函數聲明在C99中無效?
- 13. 如何刪除以下'隱式函數聲明'警告?
- 14. 警告:函數'foo'的隱式聲明在C99中無效
- 15. Xcode - 警告:隱式函數聲明在C99中無效
- 16. 警告:「功能的隱式聲明‘......’在C99" 無效
- 17. 防止「警告:函數的隱式聲明」setlinebuf'...「
- 18. 警告:函數的隱式聲明 - 包含事物的順序?
- 19. 警告:隱式聲明函數'getresuid'(和'seteuid')
- 20. GCC警告:函數'puts'的隱式聲明在C99中無效
- 21. 警告的原因是什麼:函數'swprintf_s'的隱式聲明?
- 22. JSLint - 未聲明'jQuery'警告
- 23. 隱式聲明
- 24. 警告:未知的轉換型性格 '「' 格式使用dprintf
- 25. vfork()隱式聲明
- 26. 隱式聲明luaL_openlibs
- 27. 隱式聲明'gets'
- 28. 本地聲明隱藏實例變量警告
- 29. 本地聲明「x」隱藏實例變量xcode警告
- 30. 警告在Xcode:本地聲明隱藏實例變量
或者'#define _XOPEN_SOURCE 700'。或者'-std = gnu11'。 –
除了@JonathanLeffler的評論:'-std = gnu11'是GCC不能放在文件頂部的選項。 – deamentiaemundi