multifile — Оптимизировать исходную структуру для проектов C ++

Я хотел бы создать небольшой проект, который разделен на несколько файлов.
main.cpp:

#include <cstdlib>
#include <iostream>
#include sc_hpp

using namespace std;

int main(int argc, char *argv[])
{
add(3,4);
system("PAUSE");
return EXIT_SUCCESS;
}

sc.hpp:

#ifndef "sc.hpp"#define sc_hpp

int add(int a, int b);#endif

function.cpp:

#include "sc.hpp"
int add(int a, int b)
{
return(a + b);
}

Но это не работает.
ОШИБКА:

`add' undeclared (first use this function)

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

0

Решение

У вас есть две очевидные ошибки:

В вашем main:

     #include <cstdlib>
#include <iostream>
// the included header file needs to be enclosed in " "// and it needs a suffix, i.e.: `.h`
#include "sc_hpp.h"
using namespace std;

int main(int argc, char *argv[])
{

}

В sc.hpp:

    // the include guards doesn't have to be enclosed in " "// the suffix's dot:'.' is replaced with underscore: '_'
// header name in uppercase letters
#ifndef SC_HPP_H
#define SC_HPP_H

int add(int a, int b);

//  included .cpp files with function implementation here
#include "sc.hpp"
#endif

Подробнее о том, как организовать файлы кода, Вот.

В целом директива препроцессора #include расширяет код, содержащийся в файле, который следует за ним, поэтому ваш код в main выглядит так:

   #include <cstdlib>
#include <iostream>
// #include "sc_hpp.h" replaced with
int add(int a, int b);
// the #include "sc.cpp" nested within the "sc_hpp.h" is replaced with
int add(int a, int b)
{
return(a + b);
}

using namespace std;

int main(int argc, char *argv[])
{

}
2

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


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