2017-08-31 18 views
0

有人知道一種方法可以禁用對CStrings的ReSharper檢查直接作爲%s參數傳遞嗎?ReSharper C++:允許CString作爲%s printf參數嗎?

CString s = "some string"; 
printf("string = %s", s); 

ReSharper的報告「無效的printf格式說明」,這在技術上是正確的,但這種語法被MS支持,並在代碼庫,我工作中廣泛使用。

我懷疑沒有辦法只過濾掉這個特定的無效格式說明符的情況,但我想我會把它扔出去,希望我錯過了一些東西。

+1

'%s'希望C樣式的空字符串結束。 'CString'中的字符串在內存中沒有跟隨該字符,所以你不能以這種簡單的方式使用它。閱讀[這裏](https://msdn.microsoft.com/en-us/library/ms174288.aspx) – Fureeish

+0

@Fureeish你絕對可以這樣使用它,但這不是問題的關鍵。有關在printf-family函數中使用CString的討論,請閱讀[here](https://stackoverflow.com/questions/6608942/how-can-cstring-be-passed-to-format-string-s)。 –

+0

要清楚,我不主張使用這種技術。它實際上給我麻疹只是看看它,但我現在堅持它。 –

回答

相關問題