簡體   English   中英

c#預處理器指令范圍

[英]c# Pre-processor directive scope

我想用:

#define

#if

允許我在單元測試期間模擬可能缺少的硬件。 使用#define語句有哪些規則?

即它的默認范圍是什么? 我可以改變指令的范圍嗎?

正如克里斯所說,#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM