我正在尝试学习预处理器指令,所以我做了一个简单的例子:
using System;
namespace learning
{
class Program
{
static void Main(string[] args)
{
#define DEBUG
test();
}
private void test()
{
#if DEBUG
Console.WriteLine("Debug mode");
#elif RELEASE
Console.WriteLine("Release mode");
#else
Console.WriteLine("Debug and release don't defined");
#endif
}
}
}
但不幸的是我错了:
无法在文件中的第一个标记之后定义或取消定义预处理程序符号
我从编程书中拿这个例子,出了什么问题?
更新(我的解决方案):
#define RELEASE
using System;
namespace learning
{
class Program
{
static void Main(string[] args)
{
#if DEBUG
Console.WriteLine("Debug mode");
#elif RELEASE
Console.WriteLine("Release mode");
#else
Console.WriteLine("Debug and release don't defined");
#endif
Console.ReadLine();
}
}
}
打印结果:Debug mode
,但应为Release mode
。我做错了什么?
答案 0 :(得分:4)
正如Neo所提到的,你可以在文件的顶部定义它。
或者,如果您希望它是全局的,并且您使用的是Visual Studio,则可以在项目属性中定义它(右键单击项目,选择“属性”,然后转到“构建”选项卡)。
该屏幕允许您根据构建配置定义符号(因此您可以为调试版本设置符号,并在切换配置时自动删除它。)
如果您不使用Visual Studio,则可以将条件符号传递给MSBuild或csc(命令行构建或命令行c#编译器)。所有这些选项都可以让您在不更改源代码的情况下设置/取消设置符号。
答案 1 :(得分:2)
您需要在#define
语句之前将using
行放在文件的最开头