Jestem początkującym programistą i właśnie próbowałem napisać aplikację konsolową z Code :: Blocks. Oto (uproszczony) Kod: main.c:Jak zapobiec wielu definicji w 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() {}
Kiedy próbuję zbudować ten program, daje następujące błędy:
*path*\test.c|1|multiple definition of `_ test'| obj\Debug\main.o:*path*\test.c|1|first defined here|
Nie ma mowy, żebym mnożył definiując test (chociaż nie wiem skąd pochodzi podkreślenie) i wydaje się bardzo mało prawdopodobne, że definicja jest w jakiś sposób zawarta dwukrotnie. To jest cały kod.
Wykluczyłem, że ten błąd spowodowany jest konfliktem nazw z innymi funkcjami lub plikami, nazywane testami lub test.c. Zwróć uwagę, że wielokrotność i pierwsza definicja znajdują się w tym samym wierszu w tym samym pliku.
Czy ktoś wie, co jest przyczyną tego i co mogę z tym zrobić? Dzięki!
Nazwy takie jak _TEST.H_, które zaczynają się od znaku podkreślenia i dużej litery są niedozwolone w kodzie użytkownika C - są zarezerwowane dla implementatorów kompilatorów. –
Powinieneś podać informacje o parametrach do przetestowania() w pliku nagłówkowym, tj. Void test(); -> void test (void); – aib
Po prostu wziąłem interfejs sugerowany w pytaniu, ale masz rację: aktualizuję odpowiedź. – mouviciel