Aracılığıyla paylaş


_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 _wenvironiş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 _environiş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 "string2string1" olarak ayarlandığında bu değerin üzerine ikinci örtük çağrısında putenvputenv 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