Eclipse C ++ несколько основных ошибок только при использовании нескольких заголовков - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь узнать, как использовать файлы заголовков в проектах C ++, поэтому я создал файлы .cpp, содержащие простые функции, чтобы убедиться, что я правильно делаю все объявления и включения.Все работало нормально, когда у меня был только один набор файлов .cpp и .h, но когда я пытаюсь добавить еще, я получаю ошибки.

Для начала, в моем проекте у меня было:

helloworld.cpp

#include "helloworld.h"
#include <iostream>
#include <cstdio>
using namespace std;

int HelloWorld() {
    puts("Hello, World!");
    cout << "Hello, World!" << endl;
    return 0;
}

helloworld.h

#ifndef HELLOWORLD_H_INCLUDED
#define HELLOWORLD_H_INCLUDED
int HelloWorld();
#endif /* HELLOWORLD_H_INCLUDED */

main.cpp

#include "helloworld.h"
#include <iostream>
using namespace std;

int main(){
    HelloWorld();
    return 0;
}

Который построен без ошибок и работает правильно.

Затем я попытался добавить второй файл .cpp и .h, что привело к ошибкам сборки.

pointers.cpp

#include "pointers.h"
#include <iostream>
using namespace std;

int Pointers() {
    int x = 1;
    int *ptr_a = &x;
    cout << *ptr_a << endl;
    return 0;
}

pointers.h

#ifndef POINTERS_H_INCLUDED
#ifndef POINTERS_H_INCLUDED
int Pointers();
#endif /* POINTERS_H_INCLUDED */

иизмененный main.cpp:

#include "helloworld.h"
#include "pointers.h"
#include <iostream>
using namespace std;

int main(){
    HelloWorld();
    Pointers();
    return 0;
}

Теперь, когда я пытаюсь собрать, я получаю сообщение об ошибке, говорящее, что есть несколько определений main - одно в main.cpp, а другое в pointers.cpp.

Еще более странно, что если я создаю новый проект и делаю то же самое, но меняю порядок, в котором я создаю файлы .cpp и .h (т.е. сначала указатели, а затем helloworld), он собирается и работает правильно, простофайлы указателей, но при добавлении файлов helloworld возникает та же самая ошибка, говоря, что множественные исключения main находятся вmain.cpp и helloworld.cpp.

Я полагаю, что это как-то связано с самим Eclipse, но я не знаю, в чем конкретно проблема.

Кто-нибудь знает, что может бытьпроисходит?

...