實際上我有兩個問題。多行宏(C++)中的If-else語句
這是 「如果(ClassPtr1)& &(ClassPtr2)」 正確的方法來檢查,如果他們不爲空?
我想知道是否有可能在多行宏中完全包含if else語句。我附上了示例代碼。
#define MACRO_NAME(object,expression){\ Class1* ClassPtr1 = dynamic_cast<Class1*>(object);\ Class2* ClassPtr2 = ClassPtr1->SomeMethod();\ if (ClassPtr1) && (ClassPtr2)\ {\ try\ {\ //some code }\ catch(...)\ {\ //some code }\ }\ else\ return expression;\ }
您錯過了一些括號。除此之外,你有沒有測試過它?嘗試生成預處理代碼,並查看它。 –
另請注意,必須使用'dynamic_cast' * *可能是不好的設計的標誌。難道不能通過使'SomeMethod'虛擬來解決它嗎? –
順便說一句,當有多個語句並需要宏中的塊時,它通常在'do {...} while(false)'塊(不帶結尾的分號)時通常的模式。 –