Я новичок C, и я просто пытался написать консольное приложение с кодом :: Blocks. Вот (упрощенный) код: main.c:Как предотвратить несколько определений в C?
#include <stdio.h>
#include <stdlib.h>
#include "test.c" // include not necessary for error in Code::Blocks
int main()
{
//t = test(); // calling of method also not necessary
return 0;
}
test.c:
void test() {}
Когда я пытаюсь построить эту программу, она дает следующие ошибки:
*path*\test.c|1|multiple definition of `_ test'| obj\Debug\main.o:*path*\test.c|1|first defined here|
Нет никакого способа, чтобы я многократно определял тест (хотя я не знаю, откуда этот символ подчеркивания), и кажется маловероятным, что определение как-то включается дважды. Это все код.
Я исключил, что эта ошибка вызвана конфликтом с именованием других функций или файлов, называемых test или test.c. Обратите внимание, что множественное и первое определение находятся в одной строке в одном файле.
Кто-нибудь знает, что вызывает это и что я могу с этим поделать? Благодаря!
Имена, такие как _TEST.H_, которые начинаются с подчеркивания и заглавной буквы, являются незаконными в коде пользователя C - они зарезервированы для разработчиков компилятора. – 2009-03-23 10:13:44
Вы должны предоставить информацию о параметрах test() в файле заголовка, то есть void test(); -> void test (void); – aib
Я просто взял интерфейс, предложенный в вопросе, но вы правы: я обновляю свой ответ. – mouviciel