Как использовать #define из другого файла?

например:

определить.cs

#define FOO

форма form1.cs

#if FOO 
  MessageBox.Show("foo is set!");
#else 
  MessageBox.Show("foo is not set!");
#endif

на определить.cs включены в тот же проект, что форма form1.cs но приведенное выше условие дают:foo is not!

5 ответов


вы не можете, но то, что вы можете сделать, это переместить определение в конфигурацию проекта, чтобы все файлы в проекте могли видеть определение.

посмотреть инструкции как определить константу глобально в C# (например, DEBUG).


по данным эта страница MSDN,

область действия символа, созданного с помощью #define это файл, в котором оно было определено.


вы не можете, область символа, созданного с помощью #define, - это файл, в котором он был определен.


как говорили другие, #define ограничен одним файлом.

однако можно определить переменные препроцессора, которые ограничены всей сборкой. Для этого вам просто нужно зайти в раздел "сборка" настроек проекта и поместить его в раздел "условные символы компиляции". (Это просто более простой способ управления /определение компилятора.) Этот подход имеет дополнительное преимущество, позволяя также определять различные наборы символов для различные конфигурации сборки.


в C# область #define ограничена только файлом, в котором он объявлен.
Чтобы определить символ, видимый во всех файлах, одним из способов является Project - >Properties->Build - >условные символы компиляции и указать символ "FOO" там.