Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Cara menentukan informasi kode tambahan dengan menggunakan
Anda dapat memberikan petunjuk ke alat analisis kode untuk kode C/C++ yang membantu proses analisis dan mengurangi peringatan. Untuk memberikan informasi tambahan, gunakan makro fungsi berikut:
_Analysis_assume_( expr )
expr - ekspresi apa pun yang diasumsikan untuk mengevaluasi ke true.
Alat analisis kode mengasumsikan bahwa kondisi yang diwakili oleh ekspresi expr benar pada titik di mana fungsi muncul. Dan, itu tetap benar sampai expr diubah, misalnya, dengan penugasan ke variabel.
Catatan
_Analysis_assume_ tidak berdampak pada pengoptimalan kode. Di luar alat analisis kode, _Analysis_assume_ didefinisikan sebagai no-op.
Contoh
Kode berikut menggunakan _Analysis_assume_ untuk memperbaiki peringatan analisis kode C6388:
#include <windows.h>
#include <sal.h>
// Requires pc to be null.
void f(_Pre_null_ char* pc);
// Calls free and sets ch to null.
void FreeAndNull(char** ch);
void test()
{
char* pc = (char*)malloc(5);
FreeAndNull(&pc);
_Analysis_assume_(pc == NULL);
f(pc);
}
_Analysis_assume_ harus digunakan sebagai upaya terakhir. Pertama-tama kita harus mencoba membuat kontrak fungsi lebih tepat. Dalam hal ini kita dapat meningkatkan kontrak alih-alih FreeAndNull menggunakan _Analysis_assume_:
#include <windows.h>
#include <sal.h>
// Requires pc to be null.
void f(_Pre_null_ char* pc);
// Calls free and sets ch to null.
_At_(*ch, _Post_null_)
void FreeAndNull(char** ch);
void test()
{
char* pc = (char*)malloc(5);
FreeAndNull(&pc);
f(pc);
}