[英]c# Pre-processor directive scope
我想用:
#define
和
#if
允許我在單元測試期間模擬可能缺少的硬件。 使用#define
語句有哪些規則?
即它的默認范圍是什么? 我可以改變指令的范圍嗎?
從MSDN ,其范圍是文件
雖然你不能沿着模擬物體的路線走下去 ,ala Mock.Rhinos ?
是的,正如克里斯提到的,它的范圍是整個文件。 您可以在文件中的任何位置使用已定義的關鍵字。
即;
#define something
... some code ...
在任何方法,類主體或命名空間,你可以使用它;
#if something
... some conditional code ...
#else
... otherwise ...
#endif
預處理程序指令的范圍從它從源解析后開始,並持續到其他方向。 如果您確實想限制預處理程序指令的范圍,請使用它完成時關閉的“undef”聲明。
#include <iostream>
using namespace std ;
int main()
{
#define someString "this is a string"
cout<<someString<<endl;
#undef someString // scope of someString ends here
cout<<someString<<endl; //this causes a compile error
return 0 ;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.