Я пытаюсь понять, почему мой c-компилятор не дает мне никаких предупреждений/ошибок со следующим (упрощенным) кодом.C - gcc: предупреждение компилятора с другой функцией-декларация/реализация
Функция декларирование не имеют параметров, а функция-реализация имеет параметры:
some.h:
void foo();
some.c:
static uint32_t count = 0;
void foo(uint32_t num) {
count += num;
print("Count: %u");
}
май n.c:
foo(100);
foo();
Выход:
Count: 100
Count: 100
Компилятор для целевой сборки:
gcc-arm-none-eabi-4_9-2015q1-20150306-win32
Linker для целевой сборки:
gcc-arm-none-eabi-4_9-2015q1-20150306-win32
компилятором Флаги:
-Wall -Werror -DuECC_CURVE=uECC_secp256r1 -DMEMORY_CHECK -DDEBUG -Os -g3 -DBACKTRACE
Ваше заявление о компиляции? включает? –
Я предполагаю, что 'print'' 'printf'.BTW [UB] (https://en.wikipedia.org/wiki/Undefined_behavior) - [UB] (https://en.wikipedia.org/wiki/Undefined_behavior) – LPs
Вопросы поиска справки по отладке («почему это не так» код работает? ») должен включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверенный пример. – Olaf