_environ
, _wenviron
_environ
değişkeni, işlem ortamını oluşturan çok baytlı karakter dizelerine yönelik bir işaretçi dizisidir. Bu genel değişken, genel değişken yerine kullanılması gereken daha güvenli işlevsel sürümler getenv_s
, _wgetenv_s
ve_putenv_s
_wputenv_s
için kullanım dışı bırakılmıştır. _environ
stdlib.h içinde bildirilir.
Önemli
Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.
Sözdizimi
extern char **_environ;
Açıklamalar
işlevini kullanan main
bir programda, _environ
işletim sistemi ortamından alınan ayarlara göre program başlangıcında başlatılır. Ortam, formun bir veya daha fazla girişlerinden oluşur
ENVVARNAME
=string
getenv_s
ve putenv_s
ortam tablosuna _environ
erişmek ve tabloyu değiştirmek için değişkenini kullanın. Ortam ayarlarını eklemek veya silmek için çağrıldığında _putenv
, ortam tablosunun boyutu değişir. Programın bellek gereksinimlerine bağlı olarak bellekteki konumu da değişebilir. değeri _environ
buna göre otomatik olarak ayarlanır.
_wenviron
Stdlib.h dosyasında şu şekilde bildirilen değişken:
extern wchar_t **_wenviron;
, öğesinin geniş karakterli bir sürümüdür _environ
. işlevini kullanan wmain
bir programda, _wenviron
işletim sistemi ortamından alınan ayarlara göre program başlangıcında başlatılır.
kullanan main
_wenviron
bir programda, ortamın çok baytlı karakter dizelerinden oluşması başlangıçta böyledirNULL
. veya _wputenv
öğesine yapılan ilk çağrıda_wgetenv
, ilgili geniş karakterli dize ortamı oluşturulur ve tarafından _wenviron
işaret edilir.
Benzer şekilde, kullanan wmain
_environ
NULL
bir programda başlangıçta ortamın geniş karakterli dizelerden oluşmasıdır. veya _putenv
öğesine yapılan ilk çağrıda_getenv
, karşılık gelen çok baytlı dize ortamı oluşturulur ve tarafından _environ
işaret edilir.
Bir programda ortamın iki kopyası (MBCS ve Unicode) aynı anda mevcut olduğunda, çalışma zamanı sistemi her iki kopyayı da tutarak yürütme süresini yavaşlatmalıdır. Örneğin, her çağırdığınızda_putenv
_wputenv
, çağrısı da otomatik olarak yürütülür, böylece iki ortam dizesi karşılık gelir.
Dikkat
Nadir durumlarda, çalışma zamanı sistemi ortamın hem Unicode sürümünü hem de çok baytlı sürümünü korurken, bu iki ortam sürümü tam olarak karşılık gelmeyebilir. Bunun nedeni, herhangi bir benzersiz çok baytlı karakter dizesinin benzersiz bir Unicode dizesiyle eşlemesine rağmen, benzersiz bir Unicode dizesinden çok baytlı karakterli bir dizeye eşlemenin benzersiz olması gerekmemesidir. Bu nedenle, iki farklı Unicode dizesi aynı çok baytlı dizeye eşlenebilir.
/MD veya /MDd
bağlantı kullanıldığında Unicode bağlamında yoklama _environ
anlamsızdır. CRT DLL için, programın türü (geniş veya çok baytlı) bilinmiyor. En olası senaryo bu olduğundan yalnızca çok baytlı tür oluşturulur.
Aşağıdaki sahte kod, bu oluşturma işleminin nasıl gerçekleşebileceğini göstermektedir.
int i, j;
i = _wputenv( "env_var_x=string1" ); // results in the implicit call:
// putenv ("env_var_z=string1")
j = _wputenv( "env_var_y=string2" ); // also results in implicit call:
// putenv("env_var_z=string2")
Bu örnekte kullanılan gösterimde karakter dizeleri C dizesi değişmez değerleri değildir; bunun yerine, çağrıdaki Unicode ortam dizesi değişmez değerlerini ve çağrıdaki _wputenv
çok baytlı ortam dizelerini temsil eden yer tutuculardır putenv
. İki ayrı Unicode ortam dizesindeki 'x
' ve 'y
' karakter yer tutucuları, geçerli MBCS'deki karakterlerle benzersiz olarak eşlenmiyor. Bunun yerine, her ikisi de dizeleri dönüştürme girişiminin varsayılan sonucu olan '' mbcs karakteriylez
eşler.
Bu nedenle, çok baytlı ortamda, için ilk örtük çağrıdan sonra "env_var_z
" değeri "" olur, ancak "env_var_z
" değeri "string2
string1
" olarak ayarlandığında bu değerin üzerine ikinci örtük çağrısında putenv
putenv
yazılır. Bu nedenle Unicode ortamı (içinde _wenviron
) ve çok baytlı ortam (içinde _environ
) bu çağrı serisinden sonra farklılık gösterebilir.
Ayrıca bkz.
Genel değişkenler
getenv
, _wgetenv
getenv_s
, _wgetenv_s
_putenv
, _wputenv
_putenv_s
, _wputenv_s