2012-06-06 24 views
7

Por ejemplo:¿Cómo usar #define desde otro archivo?

define.cs

#define FOO 

Form1.cs

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

los define.cs se incluyen en el mismo Projet que Form1.cs pero la condición anterior da: foo is not!

Respuesta

10

No se puede, pero lo que se puede hacer es mover la definición a la configuración del proyecto para que todos los archivos en el proyecto puedan ver la definición.

Consulte las instrucciones en How to define a constant globally in C# (like DEBUG).

+0

Gracias por la respuesta. Parece una buena solución. – Jack

1

No se puede, El alcance de un símbolo creado con #define es el archivo en el que se definió.

2

Según this MSDN page,

El alcance de un símbolo creado con #define es el archivo en el que se ha definido.

1

Como han dicho otros, un #define tiene un alcance de un solo archivo.

Sin embargo, puede definir las variables de preprocesador que tienen un alcance para todo el conjunto. Para hacer esto, solo tiene que acceder a la sección "Crear" de la configuración del proyecto y colocarla en la sección "Símbolos de compilación condicional". (Esta es una forma más sencilla de administrar el /define compiler switch). Este enfoque tiene la ventaja adicional de que también le permite definir diferentes conjuntos de símbolos para diferentes configuraciones de compilación.

1

En C#, el alcance de #define solo se limita al archivo en el que se declara.
Para definir un símbolo visible en todos los archivos, una forma es Proyectar-> Propiedades-> Compilar-> Símbolos de compilación condicional y especificar el símbolo "FOO" allí.

Cuestiones relacionadas