我在C++代碼下面的函數(它只是一個例子)的端警告控制到達非void函數C++
Object& XYZ::getObject(InObj obj) {
try{
return obj.getObj();
}
DC_THROW_ERROR(ExceptionObj, "Object Not Found"); // Macro which throws an exception
}
當我編譯上面的代碼我得到警告(即控制到達的非端void函數)宏在編譯之前被展開。所以編譯器意識到如果它不返回拋出異常的東西。如果是這樣,編譯器爲什麼會給出警告這些類型的函數在我的項目中都是evrywhere。爲了擺脫這些警告我已經寫在宏後面的下面。
return *(static_cast<Object*>(0));
這是修復它的正確方法嗎?我知道它有點狡猾..我不能改變代碼,因爲我必須改變大約1000個函數。那麼任何人都可以請告訴我,如果有更好的方法來解決它?
謝謝
你能提供宏的定義嗎? –
OT:我想知道爲什麼你可以從一個被聲明返回一個Object的函數返回一個Object * ... – MartinStettner
按照Oli提供宏的定義,以及你使用的是什麼編譯器。 –