Derleyici Uyarısı (düzey 1) C4473
'function' : biçim dizesi için yeterli bağımsız değişken geçirilmedi
yer tutucular ve parametreleri sayı variadic bağımsız değişkenleri bekler, ancak sayı sağlanmıştır
'format_string' biçim dizesi için eksik variadic bağımsız değişken dizini gerekiyor
Bu bağımsız değişken bir dönüştürme tanımlayıcısı tarafından kullanılır
bu bağımsız değişken alan genişliği olarak kullanılır
bu bağımsız değişken bir duyarlık olarak kullanılır
bu bağımsız değişken arabellek boyutu olarak kullanılır
Derleyici, bir biçim dizesindeki yer tutucuları karşılamak için gereken bağımsız değişkenlerin sayısıyla sağlanan bağımsız değişkenlerin sayısı arasında bir uyuşmazlık algılamıştı. Variadic işlevlerin printf ve scanf ailelerinin doğru kullanımı, biçim dizesi tarafından belirtilen sayıda bağımsız değişken sağlamanızı gerektirir. Bazı yer tutucular, ek bağımsız değişkenlerin yanı sıra içerik için bir bağımsız değişkenin yanı sıra genişliği, duyarlığı veya arabellek boyutunu belirtmenizi gerektirir. Uyuşmazlık genellikle kodunuzda bir hata olduğu anlamına gelir.
printf ailesi biçim dizesi yer tutucularıyla ilişkili bağımsız değişkenler hakkında bilgi için bkz . Biçim belirtimi söz dizimi: printf ve wprintf işlevleri. İşlev işlevine özgü bilgiler için belgelere bakın.
Bu uyarı Visual Studio 2015'te yenidir.
Örnek
Bu örnekler, C4473'in bağımsız değişkenleriyle biçim dizesi uyuşmazlığından kaynaklanabilir uyarısının iki yolunu gösterir ve ayrıca sorunların nasıl çözüleceğini gösterir.
// c4473p.cpp
// compile with: cl /c /W4 c4473p.cpp
#include <stdio.h>
void print_func(int a, float f)
{
printf_s("This takes %*f arguments.\n", f); // C4473, missing * width argument
printf_s("This takes %*f arguments.\n", a, f); // fix: supply width argument
}
İlk hata iletisinde, derleyici bir bağımsız değişkenin eksik olduğunu algılar, ancak eksik bağımsız değişkenin genişlik mi yoksa içerik mi olduğunu anlayamaz, bu nedenle sağlanan bağımsız değişkenin genişlik için birinci, eksik bağımsız değişkenin ise tür dönüştürme tanımlayıcısı için ikinci bağımsız değişken olduğunu varsayar. Gerçek eksik bağımsız değişkeni belirlemek için biçim dizesini incelemeniz gerekir.
// c4473s.cpp
// compile with: cl /c /W4 c4473s.cpp
#include <stdio.h>
void scan_func(int a, float f)
{
char name[20];
scanf_s("%s", &name); // C4473, missing buffer size argument
scanf_s("%s", &name, sizeof(name)); // fix: supply buffer size argument
}
Bu örnekte, scanf_s her yer tutucu için biri yazacak adresi, diğeri de birincinin boyutunu sağlamak için olmak üzere iki bağımsız değişken gerektirir. Gerekli bağımsız değişkenlerin açıklaması için her kitaplık işlevinin belgelerine bakın.
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