Как запустить несколько исходных файлов ??? Нужна помощь, пожалуйста (C ++ CODEBLOCKS) - PullRequest
1 голос
/ 01 марта 2011

У меня есть два разных файла .cpp (связанные списки) в одном наборе источника одного проекта.Я попытался запустить один из файлов связанных списков под названием «customer», но он запускает только другой, называемый «video».Как запустить файл связанного списка «customer»?

Мой файл customer.cpp активен, но все еще работает программа для файла связанного списка «video».

По сути, я пытаюсьпринесите два отдельных списка клиентов и еще один отдельный список с видео.

Но когда я попытался запустить программу на вкладке customer.cpp, я подумал, что она должна была быть запущена, но она запускает файл video.cpp ...am Я что-то здесь упустил?

   #include <iostream>
    using namespace std;

    struct video
    {
      chartitle[40],star1[20],star2[20],star3[20],star4[20],prod[20],dir[20],proco[40];
     int copy;
     video *next;
     };
        video *first = NULL, *current = NULL;
      int optn = 0;

^ это моя структура узлов для списка видео файл video.cpp

      #include <iostream>
      using namespace std;

       struct customer
      {
       char f_name[20],l_name[20];
        int acc_num;
       customer *next;
        };
        customer *start = NULL, *pointer = NULL;
         int option = 0;

^ это моя структура узлов для списка связанных клиентов.файл customer.cpp. Оба из них находятся в двух отдельных исходных файлах в рамках одного проекта.

       int main(void)
        {
       first = NULL;
        current = NULL;
        do
       {
        display();
        cout << endl;
        cout << "Choose an option: " << endl;
        cout << "1. Move the current position forward once." << endl;
       cout << "2. Move the current position backwards once." << endl;
       cout << "3. Add a video at the beginning of the list." << endl;
        cout << "4. Add a video at the current position of the list." << endl;
       cout << "5. Add a video at the ending of the list." << endl;
       cout << "6. Delete the first video from the list." << endl;
       cout << "7. Delete the video at current position from the list." << endl;
       cout << "8. Delete the last video from the list." << endl;
       cout << "9. End program." << endl;
       cout << endl << " >> " ;
       cin >> optn;
     switch (optn)
    {
        case 1 : currentfor();
        break;
        case 2 : currentbac();
        break;
        case 3 : addbeginning();
        break;
        case 4 : addmiddle();
        break;
        case 5 : addending();
        break;
        case 6 : deletebegin();
        break;
        case 7 : deletemiddle();
        break;
        case 8 : deleteend();
        break;
    }
}
while (optn != 9);

}

^ это код, в котором я вызываю все функции для видео.файл cpp.

 int mains(void)
 {
 start = NULL;
 pointer = NULL;
do
  {
    display_menu();
    cout << endl;
    cout << "Choose an option: " << endl;
    cout << "1. Move the current position forward once." << endl;
    cout << "2. Move the current position backwards once." << endl;
    cout << "3. Add a customer at the beginning of the list." << endl;
    cout << "4. Add a customer at the current position of the list." << endl;
    cout << "5. Add a customer at the ending of the list." << endl;
    cout << "6. Delete the first customer from the list." << endl;
    cout << "7. Delete the customer profile at current position from            the         list." << endl;
    cout << "8. Delete the last video from the list." << endl;
    cout << "9. End program." << endl;
    cout << endl << " >> " ;
    cin >> option;
     switch (option)
    {
        case 1 : current_forward();
        break;
        case 2 : current_backward();
        break;
        case 3 : add_beginning();
        break;
        case 4 : add_middle();
        break;
        case 5 : add_ending();
        break;
        case 6 : delete_beginning();
        break;
        case 7 : delete_middle();
        break;
        case 8 : delete_ending();
        break;
    }
}
while (option != 9);

}

^ это окончательный код, где я вызываю все функции для файла customer.cpp ... когда я пытался изначально с int main (void) дляcustomer.cpp, компилятор показалошибка, связанная с тем, что "main" была объявлена ​​как в video.cpp, так и в customer.cpp, поэтому я попытался изменить "main" на "mains", тогда он не отображает никаких ошибок ... что я здесь пропустил?

Ответы [ 3 ]

5 голосов
/ 01 марта 2011

Я думаю, вы предполагаете, что для каждого исходного файла в проекте требуется функция main(). main() является начальной точкой выполнения исполняемого файла. Таким образом, весь исполняемый файл должен иметь только один main().

Редактировать 1

Компилируются только исходные файлы. Кроме того, есть три этапа, через которые должны пройти исходные файлы ( Препроцессор -> Компилятор -> Линкер ). Я постараюсь дать вам представление о том, как разделить. Предположим, что у нас есть два исходных файла и заголовок -

  1. main.cpp
  2. foo.cpp
  3. foo.h

Файл обычно называется main.cpp, где находится main(). Сейчас -

foo.h : Обычно здесь идут объявления.

class foo
{
    int number ;

    public:
    foo( int n );
    int getNumber() const;
};

foo.cpp : Поскольку foo.cpp является исходным файлом, он компилируется. Теперь, чтобы определить определения функций-членов, вам нужно включить его заголовок. Просто без этого, если вы определяете foo функции-члены, компилятор не знает, что такое foo.

#include "foo.h"

foo::foo( int n )
{
    number = n;
}

int foo::getNumber() const
{
    return number;
}

Перед компилятором препроцессор копирует содержимое foo.h в исходный файл foo.cpp. Теперь я намерен создать экземпляр foo в моем main.cpp. main.cpp не знает, что такое foo. Каждый источник независим. Знание одного исходного файла не означает, что все исходные файлы знают это. Таким образом, вы должны включить foo.h в main.cpp тоже. Без этого, если вы попытаетесь создать объект для foo, исходный файл main.cpp не знает, что означает идентификатор foo. Таким образом,

#include "foo.h"

int main()
{
    foo obj(10);
    obj.getNumber();

    return 0;
}

g ++ main.cpp foo.cpp -o a.out . Теперь мой a.out является исполняемым файлом, чья начальная точка выполнения начинается с main(), определенного в main.cpp. Надеюсь, это поможет до такой степени.

0 голосов
/ 14 декабря 2018

Это не ответ на вопрос, а только для тех, кому на самом деле нужно запустить несколько .c или .cpp файлов в Code :: Blocks.

Вместо того, чтобы иметь проект, закройте проект с "File > Close project", теперь откройте ваши файлы, и вы можете запустить их отдельно, и это будет работать.

Компилятор создаст файлы из вашей папки открытого файла, поэтому вы получите как минимум 2 файла в одной папке (с расширениями "*.exe" и "*.o" для Windows).

0 голосов
/ 01 марта 2011

Ну.

Вы можете иметь только одну функцию main() для каждой программы.И причина в том, что main является «точкой входа» для вашей программы (это первая функция, которая вызывается средой выполнения), поэтому, если у вас их больше, среда выполнения не будет знать, с чего начать.Чтобы избежать таких проблем, компоновщик выдаст ошибку, если функция main определена более одного раза.

Теперь, есть ли причина, когда они являются частью одного и того же дерева исходных текстов?Они что-то делят?Если нет, то просто скомпилируйте и свяжите их отдельно.

...