Kullanarak ek kod bilgilerini belirtme _Analysis_assume_
C/C++ kodu için kod çözümleme aracına analiz işlemine ve uyarıları azaltmaya yardımcı olan ipuçları sağlayabilirsiniz. Ek bilgi sağlamak için aşağıdaki işlev makrosunu kullanın:
_Analysis_assume_( expr )
expr
- true olarak değerlendirildiğinde kabul edilen herhangi bir ifade.
Kod çözümleme aracı, ifadeyle expr
temsil edilen koşulun işlevin göründüğü noktada true olduğunu varsayar. Ayrıca, örneğin bir değişkene atamayla değiştirilene kadar expr
true kalır.
Dekont
_Analysis_assume_
kod iyileştirmeyi etkilemez. Kod çözümleme aracının dışında, _Analysis_assume_
bir operasyon yok olarak tanımlanır.
Örnek
Aşağıdaki kod, C6388 kod çözümleme uyarısını düzeltmek için kullanır_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.
void FreeAndNull(char** ch);
void test()
{
char* pc = (char*)malloc(5);
FreeAndNull(&pc);
_Analysis_assume_(pc == NULL);
f(pc);
}
_Analysis_assume_
son çare olarak kullanılmalıdır. Öncelikle işlevlerin sözleşmelerini daha kesin hale getirmeye çalışmamız gerekir. Bu durumda, kullanmak _Analysis_assume_
yerine sözleşmesini FreeAndNull
geliştirebiliriz:
#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);
}
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin