C serbest biçimli bir dildir. Bu, onu birçok şekilde biçimlendirebileceğiniz ve yine de yasal bir program olacağı anlamına gelir.
Örneğin şöyle bir ifade
a = b * c;
gibi yazılabilir
a=b*c;
ya da beğen
a
=
b
*
c
;
Yani derleyici satırları gördüğünde
temp = *a
*a = *b;
bunun anlamı olduğunu düşünüyor
temp = *a * a = *b;
Bu elbette geçerli bir ifade değildir ve derleyici eksik noktalı virgül yerine bundan şikayet edecektir. Bunun geçerli olmamasının nedeni a
, bir yapıya işaretçi olması, dolayısıyla *a * a
bir yapı örneğini ( *a
) bir yapıya ( a
) gösterici ile çarpmaya çalışmaktır .
Derleyici eksik noktalı virgülü algılayamasa da, tamamen ilgisiz hatayı yanlış satırda bildirir. Bunu fark etmek önemlidir, çünkü hatanın bildirildiği satıra ne kadar bakarsanız bakın, orada hata yoktur. Bazen bunun gibi problemlerin iyi olup olmadığını ve hatasız olup olmadığını görmek için önceki satırlara bakmanız gerekir .
Bazen hatayı bulmak için başka bir dosyaya bakmanız bile gerekir. Örneğin, bir başlık dosyası, başlık dosyasında yaptığı son yapıyı tanımlıyorsa ve yapıyı sonlandıran noktalı virgül yoksa, hata başlık dosyasında değil, başlık dosyasını içeren dosyada olacaktır.
Ve bazen daha da kötüleşir: iki (veya daha fazla) başlık dosyası eklerseniz ve ilki eksik bir bildirim içeriyorsa, büyük olasılıkla sözdizimi hatası ikinci başlık dosyasında gösterilecektir.
Bununla ilgili, takip hataları kavramıdır . Genellikle eksik noktalı virgüllerden kaynaklanan bazı hatalar birden çok hata olarak rapor edilir . Bu nedenle, hataları düzeltirken en baştan başlamak önemlidir, çünkü ilk hatayı düzeltmek birden fazla hatayı ortadan kaldırabilir.
Elbette bu, her seferinde bir hatanın düzeltilmesine ve büyük projelerde külfetli olabilen sık tekrar derlemelere yol açabilir. Bu tür takip hatalarını tanımak, deneyimle gelen bir şeydir ve bunları birkaç kez gördükten sonra gerçek hataları ortaya çıkarmak ve yeniden derleme başına birden fazla hatayı düzeltmek daha kolaydır.