У меня есть небольшая проблема. У меня есть 2 файла: one.c и two.c они оба decler и реализовать-структуру: StackNode файлы заголовков являются: one.h:те же структуры разные файлы
#ifndef ONE_H
#define ONE_H
typedef struct StackNode StackNode;
#endif
two.h:
#ifndef TWO_H
#define TWO_H
#include "one.h"
#endif
CPP файлы: one.c:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
#include "one.h"
struct StackNode
{
........
};
two.c:
#include <stdio.h>
#include <malloc.h>
#include "two.h"
struct StackNode
{
........
};
Почему это компилировать и запускать в linox, но в визуальном stutio он говорит: two.obj: ошибка LNK2005: "структура StackNode * сверху" (? Сверху @@ 3PAUStackNode @@ A) уже определен в one.obj 1> c: \ users \ documents \ visual studio 2010 \ Projects \ Exercise \ Debug \ Exercise.exe: фатальная ошибка LNK1169: обнаружен один или несколько символов с несколькими значениями
Что я могу сделать, это будет работать и на визуальной ? Спасибо :)
изменить имя или поместить их в разные пространства имен (или сделать их одинаковыми и иметь только одно определение). – crashmstr
, но почему/как он работает на Linux? –
И почему вы включаете 'malloc.h' в C++? – crashmstr