Я использовал эту строку для запуска браузера по умолчанию:
System.Diagnostics.Process.Start("http://www.google.com");
Нет, только в текущей единице перевода.
То есть каждый файл, имеющий #define
или включающий файл с #define
, увидит определение.
Edit, чтобы ответить на ваш комментарий: чтобы получить определение в каждом файле, либо поместите его в заголовок, который включается повсюду, либо используйте какую-либо опцию компилятора для добавления определений.
например, для gcc можно было бы сделать
gcc -Dthedefine=itsvalue
Не уверен, как указать такие включения в VC ++, но Я уверен, что это возможно.
Символ, определяемый "#define", виден от места директивы до конца единицы перевода (или до ближайшего "#undef" для этого символа). Например, если вы определяете что-то в файле «file.h», этот символ будет отображаться в «file.h» и в каждом файле, который включает «file.h», прямо или косвенно ...
Директива #define заменяет токен-строка для всех последующих появления идентификатора в исходный файл. Идентификатор заменяется только тогда, когда он формирует токен. (См. Токены C ++ на языке C ++. Ссылка.) Например, идентификатор не заменяется, если он появляется в комментарий, внутри строки или как часть более длинного идентификатора.
Это не глобально, это просто для текущего файла / источника
Он будет определен только в определенном вами файле или в файлах, которые включают этот файл
Какой бы макрос вы ни определили в одном файле, он будет виден в другом файле только в том случае, если вы включили в него файл с макросом, поэтому он не будет автоматически глобальным. Обычно по этой причине макросы должны быть определены в ваших файлах заголовков, чтобы вы могли сделать #include «headerFile.h».
Директива #define
будет определять с этого момента времени до завершения компиляции - имейте в виду, что каждый .cpp считается как это отдельная единица компиляции.
Чтобы определить что-то в исходных файлах, это должно быть в файле заголовка, который включает все исходные файлы
#define
работает только в единица перевода, в которой она определена. Если файлы заголовков используются в единицах перевода, это может быть несколько файлов.
Однако, чтобы сделать его действительно глобальным, вам понадобится расширение Visual Studio. Параметр командной строки / D позволяет передать в препроцессор эквивалент #define
, и вы можете поместить его на страницу свойств вашего проекта. Это почти «настолько глобально, насколько это возможно»; для многопроектных решений можно использовать совместно унаследованные листы свойств проекта.
Вы также можете настроить лист свойств Visual Studio, который поддерживается файлом .vsprops, и назначить его соответствующим проектам в вашем решении. .
Это позволит вам легко поддерживать общие настройки многих типов в нескольких проектах, даже если они находятся в отдельных файлах решения.
http://msdn.microsoft.com/en-us/library/a4xbdz1e % 28VS.80% 29.aspx