Однажды я допустил ошибку в своем коде, когда забыл завершить инициализацию переменной точкой с запятой и вместо этого поставил запятую. Однако, к моему удивлению, он никогда не возвращал ошибку, и код работал как обычно.
Поэтому мне было интересно, как это работает? Я упростил свой код, написав следующий код:
uint32_t randomfunction_wret()
{
printf("(%d:%s) - \n", __LINE__, __FILE__);
return 6;
}
uint32_t randomfunction()
{
printf("(%d:%s) - \n", __LINE__, __FILE__);
}
int main()
{
uint32_t val32 = 3, randomfunction_wret(), valx = 6, randomfunction();
printf("(%d:%s) - %u %u\n", __LINE__, __FILE__, val32, valx);
return 0;
}
При выполнении возвращается;
(43:test.c) - 3 6
Я очень шокирован тем, что нет ошибок, когда у меня есть функции, разделенные в моей инициализации. Однако функции даже не вызывались.
============== ОБНОВЛЕНО
Как насчет того, чтобы код был следующим, из того, что я вижу, теперь вызывается каждая функция;
int main()
{
uint32_t val32;
val32 = 3, randomfunction_wret(), randomfunction();
printf("(%d:%s) - %u \n", __LINE__, __FILE__, val32);
return 0;
}
Вывод будет
(23:test.c) -
(29:test.c) -
(38:test.c) - 3