Пустой аргумент в определении функции, но примитивный тип данных в объявлении

У меня есть запрос с кодом ниже. Как приведенный ниже код интерпретируется в соответствии с K&R c? Нет ошибки компиляции, и код работает нормально. Я использовал -traditional в опции сборки в кодовых блоках. Некоторое время искал, но не смог получить удовлетворительного ответа.

void func(int);

int main(void) {
    func(10);
    return 0;
}

void func(void){
}

1 ответ

Как приведенный ниже код интерпретируется согласно K&R C?

Как код с синтаксической ошибкой. K&R C не знает ни о прототипах, ни о void ключевое слово (оба были введены в C89), так что это синтаксическая ошибка.

Начиная с C89, конфликтующие объявления являются нарушением ограничения (причудливые слова для ошибки), которые необходимо диагностировать.

Другие вопросы по тегам