2012-06-06 15 views
7

Ad esempio:Come usare #define da un altro file?

define.cs

#define FOO 

Form1.cs

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

le define.cs sono inclusi nella stessa Projet che Form1.cs ma le condizioni di cui sopra danno: foo is not!

risposta

10

Non è possibile, ma ciò che è possibile spostare è definire la configurazione del progetto in modo che tutti i file nel progetto possano vedere la definizione.

Vedere le istruzioni in How to define a constant globally in C# (like DEBUG).

+0

Grazie per la risposta. Sembra una buona soluzione. – Jack

1

Non è possibile, l'ambito di un simbolo creato con #define è il file in cui è stato definito.

2

Secondo this MSDN page,

L'ambito di un simbolo creato con #define è il file in cui è stato definito.

1

Come altri hanno già detto, un #define ha un ambito per un singolo file.

Tuttavia, è possibile definire variabili del preprocessore con ambito per l'intero assieme. Per farlo devi solo entrare nella sezione "Costruisci" delle impostazioni del progetto e metterla nella sezione "Simboli di compilazione condizionale". (Questo è solo un modo più semplice per gestire il /define compiler switch.) Questo approccio ha il vantaggio aggiunto di consentire anche di definire diversi gruppi di simboli per diverse configurazioni di build.

1

In C#, l'ambito di #define è limitato al file in cui è stato dichiarato.
Per definire un simbolo visibile in tutti i file, one way è su Project-> Properties-> Build-> Conditional Compilation Symbols e specificare il simbolo "FOO" lì.

Problemi correlati