Я хотел бы создать небольшой проект, который разделен на несколько файлов.
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)
В первый раз я пытаюсь создать программу из более чем одного файла, поэтому я думаю, что проблема должна быть легко решаемой.
У вас есть две очевидные ошибки:
В вашем 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[])
{
}