C#中如何定义全局的宏(#define)

C#中如何定义全局的宏变量(#define),可以在多个类文件中使用使用,以及可以在使用该动态库的类文件中使用需要的是宏定义,编译开关,不是全局变量,是全局宏定义,比如#... C# 中如何定义全局的宏变量(#define),可以在多个类文件中使用使用,以及可以在使用该动态库的类文件中使用
需要的是宏定义,编译开关,不是全局变量,是全局宏定义,比如#define DEBUG 这样一个宏定义,如何能够在没个类里面都使用,而不用没个类文件中都定义一次!
展开
 我来答
西西哩的小马甲
推荐于2019-09-30 · TA获得超过10.1万个赞
知道大有可为答主
回答量:39
采纳率:100%
帮助的人:1.7万
展开全部

在 Project->Properties -> Build 设置中有一个 Conditional compilation symbols,将你要设置的宏的名称写在这个设置中就是全局的宏定义

1、在类的头部写上#define UInt32或者在项目的环境变量定义。

2、在用到这个变量的时候,写类解决,关键在于重写隐式和显式转换。

扩展资料;

C++中宏的作用

1、使用宏定义常量

宏定义不是C/C++严格意义上的语句,所以定义后不加分号,使用define后的标示符来代替常量,当需要在程序中多次使用200这个值,比如定义数组的长度等,并且可能在以后对该值做出修改时,使用宏定义,仅需要改变宏定义所表示的值即可,而不需要到程序中去寻找哪些地方使用了200。

2、当定义局部变量时,const所定义的变量的作用域,仅限于const定义所在的函数段,而使用宏定义#define,其作用域不仅限于定义所在的函数段,而是从定义点到整个程序的结束。

参考资料:百度百科C#

兔丞飞
高粉答主

推荐于2019-09-26 · 专注娱乐 专注娱乐 专注娱乐
兔丞飞
采纳数:25 获赞数:19893

向TA提问 私信TA
展开全部

c#所有变量都要声明在class内。全局变量可以用静态变量替代。

public class A

public static int a;

调用时直接用类名,A.a = 1;

宏定义:

[Flags]

enum BuyFlag : uint

{

E_BuyClick = 0,

E_SelectStock,

E_RefPrice,

E_BuyNum,

E_BuyOK_First,

E_BuyOK_Second,

E_WinStartClick,

E_WriteCMD,

E_KillTdxw,

E_CloseCMD,

E_end = 99

}

扩展资料

使用 #define 创建的符号的作用域是在其中定义该符号的文件。如以下示例所示,必须将 #define 指令放在文件顶部。

#define DEBUG  

//#define TRACE  

#undef TRACE  

using System;  

public class TestDefine  

{  

static void Main()  

{  

#if (DEBUG)  

Console.WriteLine("Debugging is enabled.");  

#endif  

#if (TRACE)  

Console.WriteLine("Tracing is enabled.");  

#endif  

}  

}  

// Output:  

// Debugging is enabled. 

参考资料:百度百科 #define

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2017-09-08 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2820万
展开全部
宏定义这个东西,主要还是取决你你要怎么使用。
C#当中,如果你希望定义一个全局变量或者说全局常量的话,那么建议使用
public static const int MAX_LENGTH;
但是如果你是定义编译选项的话,其实是可以使用#define的,比如可以定义
#define DEBUG实现宏编译
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
志远823
2011-12-30 · TA获得超过2296个赞
知道小有建树答主
回答量:913
采纳率:66%
帮助的人:1168万
展开全部
C#把宏给去掉了,如果有全局变量或者定义,我一般这样
class Global
{
static const int val1 = 10;
static const string val2 = "Hello";
}
然后就可以这样用
Global::val1 == 10 do...
Global::val2 == "hello" do...
此外如果是一些宏的辅助运算,比如max(a,b)
可以使用C#里的泛型来实现,也不如C++好使,说实在的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bidata
2011-12-30
知道答主
回答量:14
采纳率:0%
帮助的人:6.1万
展开全部
c#不支持宏定义,只支持编译开关。
更多追问追答
追问
对 要的就是编译开关。怎么弄?
我想加上#define xxx就编译a代码,否则编译b代码,像这样的:
#if xxx
a
#else
b
#endif
这样的代码到处都是,好多文件里都有
我想知道#define xxx这句话写在哪?能够只改这一处能管所有的编译
追答
把这句话放在此C#文件的最上面就可以了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式