Agus Budy Wuysang wrote:
> >
> > strcpy(argv[0], "very very very very long string");
> >
> Anda berusaha mengopy sesuatu ke tempat yang belum dialokasikan
> sepenuhnya ini masalah lain lagi... (bukan tugas 'const pointer'
> warning) tapi alokasi memory pada tempat yang ditunjuk oleh
> 'const pointer'.
>
mmm, example yg. saya berikan memang keliatan 'stupid' yah.. ;).
memang kita nggak akan secara sengaja melakukan strcpy seperti contoh
di atas. Tapi hal ini sangat mungkin terjadi secara nggak sengaja,
alias bug.
point saya adalah, penggunaan const yg. 'benar', paling nggak akan ada
warning sehingga bug itu bisa dibetulin.
> > $ cdecl explain 'const char *const argv[]'
> > declare argv as array of const pointer to const char
>
> tidak perlu sebab argv[x][y] sebagai char yang tidak
^^^^^^^^^^^^^^^^^^^^^^^
> memerlukan const... yang equiv:
>
well, justru di sini kan letak perdebatannya...
saya lebih suka 'const char argv[argc][y]', karena ada 'proteksi'
tambahan..
> Oh well kalau memang 'const * const argv[]' kurang benar; berarti
> yang bikin getopt(3) & execve(2) pasti lagi ngantuk... :)
>
hehe..
di C FAQ juga disebutin kalau deklarasi argv itu cukup 'char *argv[]'
saja. Mmmm, bukannya yg. ini benar dan yg. itu kurang benar, tapi
sekedar preferensi saja... Kalau memang yakin kalau nggak ada bug, ya
pakai saja 'char *argv[]'. Tapi kalau nggak yakin, ya pakai double
const 'const char *const argv[]'. Kalau ada warning, berarti mungkin
ada bug di program..
cheers,
Bennylp
--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]