assert_param(); nedir?

Başlatan Analog, 02 Eylül 2018, 00:16:18

Analog

Merhaba

Kodlarımızı yazarken kullandığımız fonksiyonların .c dosyasında içine baktığımız zaman assert_param(); ı görüyoruz. Mesela I2C_GenerateSTART(); fonk. bakalım

void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_I2C_ALL_PERIPH(I2Cx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  if (NewState != DISABLE)
  {
    /* Generate a START condition */
    I2Cx->CR1 |= I2C_CR1_START;
  }
  else
  {
    /* Disable the START condition generation */
    I2Cx->CR1 &= (uint16_t)~((uint16_t)I2C_CR1_START);
  }
}

burada assert_param(); olayı neden var daha doğrusu ne işe yaradığını bilmiyorum. Açıklayan olursa sevinirim

sımışka

conf.h kütüphanesi içerisinde tanımlanan bir makro aslında.(#define USE_FULL_ASSERT 1)

Argüman olarak aldığı ifadenin doğruluk durumuna bağlı olarak hatalı olup olmadığı mesaj almayı sağlayan fonksiyondur.

Argümanın false değer alması durumunda hata mesajı yazdırır ve abort fonksiyonu ile programı sonlandırmayı sağlamaktadır.

OptimusPrime

C deki karsiligi assert(). Bir cesit hata ayiklama mekanizmasi.
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

yldzelektronik

Argümanın false değer alması durumunda mı, true değer alması durumunda mı tetiklenir?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

OptimusPrime

Standart C gore false olmasi lazim.
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||