繁体   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