c ++,连接Hpp和Cpp

时间:2015-11-12 12:26:10

标签: c++

/*Header.h file*/

#include <iostream>
using namespace std;

int main(){
    /*Menu*/
    /*case1:

        int x;
        cout << "Input ammount:";
        cin >> x
        sugarcake(x)*/

    /*case2:

       something else

    */
}
/*sugarcake.cpp file*/

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

void sugarcake(int x) {
    cout << (x * 0.75) << "st egg" << endl;
    cout << (x * 0.75) << "dl sugar" << endl;
    cout << (x * 0.5) << "tsk vanillasugar" << endl;
    cout << (x * 0.5) << "tsk blabla" << endl;
    cout << (x * 0.75) << "dl wheatflour" << endl;
    cout << (x * 18.75) << "gram butter" << endl;
    cout << (x * 0.25) << "dl water" << endl;
}

我如何完成这项工作或者我完全理解它是错误的? (昨天开始使用C ++,所以请善待,我还没有找到任何对我有用的明确答案)
TL DR:在Header.h中的sugarcake.cpp中调用函数sugarcake(int x)

2 个答案:

答案 0 :(得分:3)

您不应该将代码放在头文件中,而是使用两个源(.cpp)文件,并且让头文件只包含(在您的情况下)sugarcake函数的声明。 / p>

因此头文件看起来应该像

// These first two line (and the last line of the file) is part of
// a header include guard (see https://en.wikipedia.org/wiki/Include_guard)
#ifndef HEADER_H
#define HEADER_H

void sugarcake(int x);

#endif // HEADER_H

sugarcake.cpp文件:

#include <iostream>
#include "header.h"  // Technically we don't need to include the header
                     // file here, but it's always a good idea to do
                     // anyway

void sugarcake(int x) {
    ...
}

最后是main.cpp文件:

#include <iostream>
#include "header.h"

int main() {
    int x;
    std::cin >> x;
    sugarcake(x);
}

如何构建这取决于您的环境,但如果您从命令行使用GCC,那么您确实喜欢这个

$ g++ -Wall -Wextra main.cpp sugarcake.cpp -o sugarcake

-Wall-Wextra选项可以启用额外的警告,总是一个好主意。 -o选项告诉g++它创建的可执行程序的名称。这两个源文件是您刚刚创建的文件。

答案 1 :(得分:1)

我们使用头文件来描述将在每次发言的其他场合之后使用的函数。

所以我将展示如何在头文件中组织我的函数:

/* header.h
 * include guards below, it is very import to use it to be sure you'r not
 * including things twice.
 */
#ifndef HEADER_H
#define HEADER_H

// I write function prototypes in the header files. 
int sum(int &a, int &b);

#endif // HEADER_H

函数的定义写在header.cpp

// header.cpp

#include "header.h"

int sum(int &a, int &b) 
{ 
    int total = a + b; 
    return total; 
}

要在main.cpp中使用该功能,您只需添加header.cpp

即可
// main.cpp
#include <iostream>
#include "header.h"

int main(int argc, char *argv[]) 
    {
        int a = 5;
        int b = 4;

        int total = sum(a, b);

        std::cout << "The total sum of the 4 and 5 numbers is: " << total << std::endl;
    } 

看看它是如何制作的?然后你可以编译cpp文件,它会工作!