Неустранимая ошибка LNK1169: найден один или несколько кратно определенных символов

Я получаю эту ошибку:

fatal error LNK1169: one or more multiply defined symbols found

Ниже приведены два файла, содержащие код. В файле 1 у меня есть main() функция, и я вызываю функции, которые написаны во втором файле с именем linklist.cpp,
Спасибо за помощь заранее.

Файл 1 — main.cpp

#include "stdafx.h"# include "linklist.cpp"

int main(int argc, _TCHAR* argv[])
{
node *link_list2;
link_list2 = createList(31);
addFront(link_list2,33);
printList(link_list2);
printf("Hello There Omer Obaid khan\n");
return 0;
}

Файл 2 — linklist.cpp

# include "stdafx.h"# include <stdlib.h>
struct node{
node * next;
int nodeValue;

};

node* initNode(int number);
node* createList (int value);
void addFront (node *head, int num );
void deleteFront(node*num);
void destroyList(node *list);
int getValue(node *list);

node*createList (int value)  /*Creates a Linked-List*/
{
node *dummy_node = (node*) malloc(sizeof (node));
dummy_node->next=NULL;
dummy_node->nodeValue = value;
return dummy_node;
}void addFront (node *head, int num ) /*Adds node to the front of Linked-List*/
{
node*newNode = initNode(num);
newNode->next = NULL;
head->next=newNode;
newNode->nodeValue=num;
}

void deleteFront(node*num)   /*Deletes the value of the node from the front*/
{
node*temp1=num->next;

if (temp1== NULL)
{
printf("List is EMPTY!!!!");
}
else
{
num->next=temp1->next;
free(temp1);
}

}

void destroyList(node *list)    /*Frees the linked list*/
{
node*temp;
while (list->next!= NULL)
{
temp=list;
list=temp->next;
free(temp);
}
free(list);
}

int getValue(node *list)    /*Returns the value of the list*/
{
return((list->next)->nodeValue);
}void printList(node *list)   /*Prints the Linked-List*/
{

node*currentPosition;
for (currentPosition=list->next; currentPosition->next!=NULL; currentPosition=currentPosition->next)
{
printf("%d \n",currentPosition->nodeValue);
}
printf("%d \n",currentPosition->nodeValue);

}

node*initNode(int number) /*Creates a node*/
{
node*newNode=(node*) malloc(sizeof (node));
newNode->nodeValue=number;
newNode->next=NULL;
return(newNode);
}

1

Решение

Я перестал читать после # include "linklist.cpp", Не включайте файлы реализации в другие файлы реализации. (если вы не делаете массовые сборки, в чем я сомневаюсь). Разделяйте объявления в заголовках, включайте их и сохраняйте определения в файлах реализации.

9

Другие решения

У вас есть два способа решить вашу проблему:

Первое дано в ответе Лучиана Григоре. Создайте отдельный заголовок и включите его в основной файл.

Второй — исключить файл linklist.cpp из сборки, используя параметры проекта.
В противном случае этот файл будет собран дважды: во время его собственной сборки и во время сборки основного файла.

Тем не менее, второй способ не очень хороший стиль программирования. Лучше создать заголовочный файл.

2

По вопросам рекламы [email protected]