_environ
, _wenviron
Variabel _environ
adalah penunjuk ke array pointer ke string multibyte-character yang merupakan lingkungan proses. Variabel global ini telah ditolak untuk versi fungsi yang lebih aman , dan _putenv_s
,_wgetenv_s
_wputenv_s
, yang harus digunakan sebagai pengganti variabel global.getenv_s
_environ
dinyatakan dalam Stdlib.h.
Penting
API ini tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.
Sintaks
extern char **_environ;
Keterangan
Dalam program yang menggunakan main
fungsi , _environ
diinisialisasi pada startup program sesuai dengan pengaturan yang diambil dari lingkungan sistem operasi. Lingkungan terdiri dari satu atau beberapa entri formulir
ENVVARNAME
=string
getenv_s
dan putenv_s
gunakan _environ
variabel untuk mengakses dan memodifikasi tabel lingkungan. Ketika _putenv
dipanggil untuk menambahkan atau menghapus pengaturan lingkungan, tabel lingkungan berubah ukuran. Lokasinya dalam memori juga dapat berubah, tergantung pada persyaratan memori program. Nilai _environ
disesuaikan secara otomatis.
Variabel _wenviron
, dideklarasikan dalam Stdlib.h sebagai:
extern wchar_t **_wenviron;
adalah versi karakter luas dari _environ
. Dalam program yang menggunakan wmain
fungsi , _wenviron
diinisialisasi pada startup program sesuai dengan pengaturan yang diambil dari lingkungan sistem operasi.
Dalam program yang menggunakan main
, _wenviron
awalnya NULL
karena lingkungan terdiri dari string karakter multibyte. Pada panggilan pertama ke _wgetenv
atau _wputenv
, lingkungan string karakter lebar yang sesuai dibuat dan ditujukkan ke oleh _wenviron
.
Demikian pula, dalam program yang menggunakan wmain
, _environ
awalnya NULL
karena lingkungan terdiri dari string karakter luas. Pada panggilan pertama ke _getenv
atau _putenv
, lingkungan string karakter multibyte yang sesuai dibuat dan ditujukkan ke oleh _environ
.
Ketika dua salinan lingkungan (MBCS dan Unicode) ada secara bersamaan dalam suatu program, sistem run-time harus mempertahankan kedua salinan, menghasilkan waktu eksekusi yang lebih lambat. Misalnya, setiap kali Anda memanggil _putenv
, panggilan ke _wputenv
juga dijalankan secara otomatis, sehingga kedua string lingkungan sesuai.
Perhatian
Dalam instans yang jarang terjadi, ketika sistem run-time mempertahankan versi Unicode dan versi multibyte lingkungan, kedua versi lingkungan ini mungkin tidak sesuai persis. Ini karena, meskipun string karakter multibyte unik memetakan ke string Unicode yang unik, pemetaan dari string Unicode unik ke string karakter multibyte belum tentu unik. Oleh karena itu, dua string Unicode yang berbeda mungkin memetakan ke string multibyte yang sama.
Polling _environ
dalam konteks Unicode tidak ada artinya ketika /MD atau /MDd
linkage digunakan. Untuk DLL CRT, jenis (lebar atau multibyte) program tidak diketahui. Hanya jenis multibyte yang dibuat karena itu adalah skenario yang paling mungkin.
Kode pseudo berikut menggambarkan bagaimana pembuatan ini dapat terjadi.
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")
Dalam notasi yang digunakan untuk contoh ini, string karakter bukan literal string C; sebaliknya, mereka adalah tempat penampung yang mewakili literal string lingkungan Unicode dalam _wputenv
string lingkungan panggilan dan multibyte dalam putenv
panggilan. Tempat penampung karakter 'x
' dan 'y
' dalam dua string lingkungan Unicode yang berbeda tidak memetakan secara unik ke karakter di MBCS saat ini. Sebaliknya, keduanya memetakan ke beberapa karakter MBCS 'z
' yang merupakan hasil default dari upaya untuk mengonversi string.
Dengan demikian, di lingkungan multibyte, nilai "env_var_z
" setelah panggilan putenv
implisit pertama menjadi "string1
", tetapi nilai ini akan ditimpa pada panggilan implisit kedua ke putenv
, ketika nilai "env_var_z
" diatur ke "string2
". Oleh karena itu, lingkungan Unicode (dalam _wenviron
) dan lingkungan multibyte (dalam _environ
) akan berbeda mengikuti serangkaian panggilan ini.
Baca juga
Variabel global
getenv
, _wgetenv
getenv_s
, _wgetenv_s
_putenv
, _wputenv
_putenv_s
, _wputenv_s
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk