_environ, _wenviron
_environ Değişken bir dizi işlem ortamını oluşturan çok baytlı karakter dizeleri için işaretçiler için bir işaretçidir. Bu genel değişken daha güvenli işlevsel sürümleri için kullanım dışı getenv_s, _wgetenv_s ve _putenv_s, _wputenv_s, hangi kullanılmalıdır genel değişkeni. _environStdlib.h içinde bildirilir.
Önemli
Bu API, Windows çalışma zamanı yürütme uygulamalarda kullanılamaz.Daha fazla bilgi için bkz: /zw ile desteklenmeyen crt işlevlerinin.
extern char **_environ;
Notlar
Kullanan bir program içinde main işlev, _environ işletim sistemi ortamdan alınan ayarlara göre program başlangıcında başlatılır. Ortam formun bir veya daha fazla girişlerini içerir
ENVVARNAME=string
getenv_sve putenv_s kullanmak _environ değişkenine erişebilir ve ortam tabloda değişiklik yapmak için. Zaman _putenv eklemek veya ortam ayarlarını silmek için adı verilen ortam tablo boyutunu değiştirir. Bellek konumuna da, programın bellek gereksinimlerine bağlı olarak değişebilir. Değeri _environ buna göre otomatik olarak ayarlanır.
_wenviron Bildirilen değişken Stdlib.h içinde:
extern wchar_t **_wenviron;
geniş karakter sürümü _environ. Kullanan bir program içinde wmain işlev, _wenviron işletim sistemi ortamdan alınan ayarlara göre program başlangıcında başlatılır.
Kullanan bir program içinde main, _wenviron başlangıçta olan NULL ortamı çok baytlı karakter dizeleri oluşur çünkü. İlk çağrı üzerine _wgetenv veya _wputenv, karşılık gelen bir geniş karakter dizeli ortam oluşturulur ve tarafından verilir _wenviron.
Benzer şekilde, kullanan bir program içinde wmain, _environ başlangıçta olan NULL ortamı geniş karakter dizeleri oluşur çünkü. İlk çağrı üzerine _getenv veya _putenv, karşılık gelen bir çok baytlı karakter dizeli ortam oluşturulur ve tarafından verilir _environ.
Bir programı aynı anda iki kopyası (mbcs ve Unicode) ortamı var, daha yavaş yürütme süresi içinde sonuçlanan her iki kopya, çalışma zamanı sistemi tutmalıdır. Örneğin, çağrılacak _putenv, çağrı _wputenv , böylece iki ortam dizeleri karşılık da otomatik olarak yürütülür.
Uyarı
Ender durumlarda, çalışma zamanı sistemi hem Unicode sürümü hem de ortam çok baytlı bir sürümünü korurken bu iki ortam sürümleri tam olarak gelmeyebilir.Bu, herhangi bir benzersiz çok baytlı karakter dizesi için benzersiz bir Unicode dize eşlemeleri de benzersiz bir Unicode dize eşleme çok baytlı karakter dizesi benzersiz olmak zorunda değildir çünkü.Bu nedenle, iki ayrı Unicode dizeleri aynı çok baytlı dizeye eşleyebilir.
Yoklama _environ Unicode biçiminde içeriği ne zaman anlamsız /md veya /MDd bağlantı kullanılır. crt dll için program türünü (geniş veya çok baytlı) bilinmiyor. En olası senaryo, çünkü sadece çok baytlı türü oluşturulur.
Bu nasıl gerçekleşebilir aşağıdaki sahte kodu gösterir.
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 dize hazır değildir; Unicode ortamı dize hazır bilgileri gösteren yer tutucu oldukları yerine, _wputenv ortam araması ve çok baytlı dizeleri de putenv çağırın. Karakter yertutucularıx've'y' iki ayrı Unicode biçiminde ortam dizeleri benzersiz olarak geçerli mbcs karakterleri eşleştirmek değil. Bunun yerine, her ikisi de bazı mbcs karakter eşlenir 'z' yani varsayılan sonucu girişiminin dizeleri dönüştürmek.
Böylece ortamında çok baytlı, değeri "env_var_z" ilk örtülü çağırdıktan sonra putenv olurdu "string1", ancak bu değer ikinci örtülü çağrısı üzerine putenv, ne zaman değerini "env_var_z"ayarı"string2". Unicode ortamı (de _wenviron) ve çok baytlı ortamı (de _environ) bu yüzden bu dizi çağrısı aşağıdaki farklı.