在我的研究中,我讀過C不支持重載。但是,這個應用程序是使用C++而不是C。我也是不能修改 stdio.h。當我試圖移動被寫入在Visual Studio 2003到Visual Studio應用程序/項目創建錯誤2010標準庫的重載函數的第二個C鏈接stdio.h
我收到錯誤:重載函數的第二個C鏈接:
錯誤C2733 '_tempnam_dbg' 不允許C:... \ stdio.h中
和
錯誤C2733:重載函數 '_wtempnam_dbg' 不允許的C第二C鏈接:... \包括\ stdio.h中
這導致相應的錯誤的代碼:
_Check_return_ _CRTIMP char * __cdecl _tempnam(_In_opt_z_ const char * _DirName, _In_opt_z_ const char * _FilePrefix);
...
_Check_return_ _CRTIMP wchar_t * __cdecl _wtempnam(_In_opt_z_ const wchar_t * _Directory, _In_opt_z_ const wchar_t * _FilePrefix);
我從this SO solution讀到,當一個extern‘C’功能與不同的聲明出現「這樣的錯誤消息參數集「。。
編輯: 這就是說,這是我的解決方案中唯一包含關於tempnam
和wtempnam
的任何內容的區域。
「我只能在我的整個解決方案中找到這個函數的一個聲明」 - 如果你可以在你自己的代碼中找到這些函數的任何聲明,那麼這可能是一個錯誤。您應該完全依賴標準庫中用於聲明函數的標準頭文件。 –
你想編譯一個'.cpp'文件以外的文件嗎?從我在網上可以找到的信息來看,你認爲這是一個C錯誤而不是C++。另外,如果沒有充分的理由,您不應該重新定義標準庫中的函數。這肯定會導致問題。 –
請原諒我,因爲我之前說「我只能找到這個函數的一個聲明」時我不正確。顯示的代碼是我能找到的唯一相關代碼,取自stdio.h –