在这种情况下,如何包含所有.cpp和头文件?

时间:2017-05-01 04:49:17

标签: c++

所以,说我有这样的事情:

的main.cpp

#include "main.h"

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

main.h

#include <stdio.h>
#include <iostream>

display.cpp

#include "display.h"

void displayMessage() {
    std::cout << "HELLO!\n";
}

display.h

void displayMessage();

如何在不深度嵌套的情况下将所有这些包含在一起?我刚开始编程一周前,并试图在大学开始这个即将到来的秋季之前提前开始。

2 个答案:

答案 0 :(得分:1)

首先给main添加一个标题只是为了包含它的标题有点超过顶部,所以我会避免这种情况。

这样的事情:

<强>的main.cpp

#include <cstdio>
#include <iostream>

#include "display.h"

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

<强> display.cpp

#include "display.h"

void displayMessage() {
    std::cout << "HELLO!\n";
}

<强> display.h

// prevent including the same header twice
#ifndef MY_PROJECT_DISPLAY_H
#define MY_PROJECT_DISPLAY_H

void displayMessage();

#endif // MY_PROJECT_DISPLAY_H

然后将每个.cpp文件编译为目标文件:

g++ -c -o main.o main.cpp
g++ -c -o display.o display.cpp

然后链接对象以生成可执行文件:

g++ -o my_program_name main.o display.o

您可能希望在编译时设置一些有用的标志(强烈推荐):

g++ -std=c++14 -Wall -Wextra -pedantic-errors -c -o main.o main.cpp
g++ -std=c++14 -Wall -Wextra -pedantic-errors -c -o display.o display.cpp

答案 1 :(得分:0)

如果您不在main.h中创建并添加main.cpp,那就更好了。而是在display.h中包含main.cpp

另外&#34;现代C ++&#34;鼓励使用C ++样式包含标题<cstdio>而不是C样式标题stdio.h

是的,欢迎编程。很有趣。 :)