Saat menelusuri beberapa kode sumber saya menemukan fungsi seperti ini:
void someFunction(char someArray[static 100])
{
// do something cool here
}
Dengan beberapa eksperimen, tampaknya kualifikasi lain juga dapat muncul di sana:
void someFunction(char someArray[const])
{
// do something cool here
}
Tampaknya kualifikasi hanya diizinkan di [
]
dalam array ketika dinyatakan sebagai parameter fungsi. Apa yang dilakukan ini? Mengapa berbeda untuk parameter fungsi?
sumber
int foo(struct bar [static 1]);
daripadaint foo(struct bar *);
sebagai tanda tangan untuk fungsi yang tidak menerima pointer NULL. (Saya tahu gcc memiliki sintaks tidak standar alternatif untuk menandai fungsi-fungsi seperti itu sehingga kompiler dapat memberikan peringatan ..)clang
saat ini memperingatkan dengan benar ketika Anda mencoba untuk melewati argumen NULL-dikenal ke fungsi dengan[static 1]
deklarasi parameter.if (!someArray) { somecode... }
dapat dihapus