使用标题文件,类和其他任何内容来降低汇编时间? -C ++

问题描述 投票:0回答:1
i创建了一个名为“ Drink”的课程,我想在同类中制作我喝的不同饮料及其信息。到目前为止,我认为我已经失去了它,但是我需要学习的是如何通过不同的文件使此工作?我想制作一个使用不同文件但也可以节省编译时间的程序,基本上是一种方法,如果我编辑一个项目,它不会导致15分钟的编译时间来更改所有内容,这就是为什么,即使这可以正常工作在一个程序上,这并不是我想要的。

到目前为止,我学到的是: 1。需要标题文件。 2。需要一个(或许多)不同的CPP文件。 3。需要连接它们。 如果您可以并且会有所帮助,请详细说明,如果您可以添加比我当前的方法,快捷方式或任何类似方法之类的方法,我将非常感谢它。另外,我知道如何选择和回答并提前投票。

#include <iostream> #include <string> using namespace std ; class Drink { public: void output_information() { cout << "Details: " << info << endl ; } string info ; }; int main() { string input ; Drink Arizona_Green_Tea ; Arizona_Green_Tea.info = "\n Premium Brewed Green Tea \n Filtered Water \n High- Fructose Corn Syrup \n Honey \n Citric Acid \n Natural Flavors \n Ginseng Extract \n Ascorbic Acid " ; Drink Honest_Ade_Green_Tea ; Honest_Ade_Green_Tea.info = "\n FILTERED WATER \n ORGANIC CANE SUGAR \n FAIR TRADE ORGANIC GREEN TEA LEAVES \n ORGANIC HONEY \n NATURAL FLAVOR \n ASCORBIC ACID (VITAMIN C) \n CITRIC ACID" ; Drink Vitamin_Water_power_c ; Vitamin_Water_power_c.info = "reverse osmosis water \n crystalline \n fructose and cane sugar (sweeteners) \n less than 0.5% of: \n vitamin C (ascorbic acid), citric \n acid, natural flavors, dragonfruit \n extract, vegetable juice (color), \n magnesium lactate and calcium \n lactate and potassium phosphate \n (electrolyte sources), taurine, \n vitamin B5 (calcium pantothenate), \n zinc gluconate, vitamin B6 \n (pyridoxine hydrochloride)\n vitamin B12 \n chromium polynicotinate" ; cout << "Search Database: " ; getline(cin , input) ; cout << endl ; if(input == "Arizona Green Tea" || input == "arizona green tea" || input == "ARIZONA GREEN TEA") { Arizona_Green_Tea.output_information() ; } if(input == "Honest Ade Green Tea") { Honest_Ade_Green_Tea.output_information() ; } if(input == "Vitamin Water Power" || input == "vitamin water power-c" || input == "VITAMIN WATER POWER C" || input == "Vitamin Water Power C" || input =="vitamin water red" || input == "Vitamin Water Red" ) { Vitamin_Water_power_c.output_information() ; } return 0 ; }

如果您有一个源文件

foo.cpp

,可以从中构建可执行文件
zap
c++ class object header
1个回答
1
投票

或您可以分两个步骤构建可执行文件,首先是从

foo.o
构建对象文件,然后从
foo.cpp

构建
zap

foo.o
(以两个步骤进行操作的原因并不明显,但请忍受我。)
如果您有
源文件,
g++ -c foo.cpp -o foo.o g++ foo.o -o zap

foo.cpp
,则可以像这样从它们中构建可执行文件:

bar.cpp

或在两个阶段中,就像这样:

g++ foo.cpp bar.cpp -o zap
完成此操作后,假设您修改。您可以以这种方式进行重建:

g++ -c foo.cpp -o foo.o g++ -c bar.cpp -o bar.o g++ foo.o bar.o -o zap
没有理由重建

foo.cpp

,因为您没有更改
zap

g++ -c foo.cpp -o foo.o g++ foo.o bar.o -o zap

,并且您仍然从较早的构建中留下了
bar.o
(像Make这样的实用程序可以帮助您管理此过程,处理不同的步骤并跟踪哪些文件是最新的,但我们不要一次尝试做太多。)

现在,如何将代码划分为不同的文件?这进入了一个微妙的thranslation Units的主题,但通常会声明进入标题文件,源文件包含一组相关功能。如果有类
bar.cpp
,则类定义(包括成员函数声明)将进入

bar.o

,并且成员函数定义分为
Foo
.
在您的情况下,您会有
Foo.h

Foo.cpp

Drink.h

#include <string>
using std::string;

class Drink
{
public:
  void output_information();
  string info;
};
Drink.cpp

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

using namespace std; // saves typing, but not a good idea generally

void Drink::output_information()
{
    cout << "Details: " << info << endl;
}

想想让程序从文件中读取饮料描述。这样,当您的饮料食谱改变时,您就不必重新编译。

今天的词:Google,ifstream,vector.

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.