C ++入門:ソースのコンパイラの取扱説明書


1.背景

  ソースは公式の例を比較したかった後に最近「C ++プライマー中国語版(第5版)」を最初の章を読み、書かれたソース、それは大体それをコンパイルして実行する方法であるかを理解した後、ドキュメントは、英語、公式記録であることがわかりましたソース。

2.関連する情報と環境

C ++プライマー公式ダウンロード出典:
http://www.informit.com/store/c-plus-plus-primer-9780321714114
C ++最初の

ダウンロードMSのVisual Studio 2012

ダウンロード版 説明
GCC 4.7.0 これは、GCCバージョン4.7.0以上に適用されます
MSのVisual Studio 2012 VS2012および上記バージョンに適しました
GCCの前のC ++ 11のコンパイラ2012 以下はVS2012バージョンに適用されます
マイクロソフトの事前C ++ 11のコンパイラ 以下は、GCCの4.7.0バージョンに適用されます

コンピュータVS2017ので、あなたが直接MSのVisual Studio 2012をダウンロードすることができますので。VS環境における以下のコンパイルと実行実行。

MSのVisual Studio 2012のディレクトリ

MSのVisual Studio 2012のファイルディレクトリ説明:

  1. 1フォルダC ++ primer19章に代わって19元をフォルダに移動します。
  2. Version_test.h源は、Sales_data.h 1参照Version_test.hのフォルダとして、ヘッダ部が必要です。
  3. CompilerNotes.pdfとVisual Studio 2012 README.PDF全体的なドキュメント。
  4. フォルダ19のフォルダに1つのトラバース、内部フォルダにジャンプするrunp.bat runpgms.bat、内部runpgms.batを行います。
  5. NMAKEメイクファイルとMS_makefile_templateは、すべてのソースコードディレクトリ用にコンパイルされたデフォルトの実行可能ファイル、であり、対応する.exeファイルを生成します。

フォルダディレクトリの第1節

第1章フォルダディレクトリ説明:

  1. CPPファイル記憶部行うデータ入力フォルダにデータが必要。
  2. 最初の章では、すべての.cppファイルのソースです。
  3. Sales_item.hは、必要なヘッダファイルを実行するためのcppファイルの一部です。
  4. .exeファイルを実行するためのrunpgms.bat、それがデータフォルダに自動的にインポートデータ意志、その結果を出力します。対応する.exeファイルなしでこのフォルダは、runpgms.batが失敗した場合。
  5. README.txtドキュメントのセクション
  6. NMAKEメイクファイルは、このディレクトリの下にあるすべてのソースコードをコンパイルしたデフォルトの実行可能ファイル、であり、対応する.exeファイルを生成します。

あなたは、動作環境を構築するためにvsvars32.bat NMAKEを呼び出すためにVS compile.bat作成する必要があるので、このようにすべてNMAKEメイクファイルとフォルダが、実行されます。あなたはダブルクリックしcompile.bat、システムはcmdを開いたときに、すべてのコンパイルコマンドは、それ上で実行されています。
compile.batコード:

@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat"
cmd

ヒント:としては、本明細書中で使用さvsvars32.bat使用して、次のアドレスを変更するアドレスをvsvars32.bat:

vsvars32.batアドレス

3.コンパイルして実行

3.1コンパイルと1つのファイルを実行します

  compile.batコピーやファイル、compile.batを実行するために、ダブルクリックして、ポップアップウィンドウは、CMDコンパイルコマンドを入力したディレクトリに貼り付けます。EHscは例外の開始場所/、次のようにコンパイルコマンド、/ NOLOGO主張を禁止しました。

// add.cpp编译成add.obj
cl /EHsc /nologo /c add.cpp
// add.obj编译成add.exe
cl /EHsc /nologo add.obj
// 一步到位,add.cpp编译成add.exe
cl /EHsc /nologo add.cpp

多段のコンパイル:
多段コンパイル
シングルステップのコンパイル:
コンパイルステップ
結果をコンパイルします。
コンパイル結果

3.2ファイルのリダイレクト

  あなたは、データのフォルダを直接入力としてファイルに、リダイレクトファイルを介して入力することなく、.EXEを実行し、計算結果を出力することができます。

データ/ ADD_ITEMデータ:

0-201-78345-X 3 20.00
0-201-78345-X 2 25.00

コンパイルコマンド:

// add_item.cpp编译成add_item.exe
cl /EHsc /nologo add_item.cpp
// 自动导入data/add_item计算结果
add_item.exe <data/add_item

結果をコンパイルします。
業績

注:Sales_item.hと参照が「Version_test.hを」#includeしながら、次のコンパイルエラー場合は、引用した理由は、add_item.cpp書式#include「Sales_item.h」です。そのため、あなたは「/ I ...」コンパイルコマンドを追加する必要があり、メインディレクトリである親ディレクトリへの参照です。メインディレクトリVersion_test.hもカタログにコピーすることができます。

コンパイルエラー

修正コンパイラのコマンド:

cl /EHsc /nologo /I.. add_item.cpp

結果をコンパイルします。
ファイルのディレクトリ

  すべての.cppに対応するフォルダが存在.exeの場合、計算結果の.exeファイルは複数の全てrunpgms.bat出力をリダイレクトすることができます。cmdが点滅した場合は、「一時停止」との最後の行runpgms.bat必要が一時停止します。
runpgms.bat

改正前runpgms.bat:

echo on
add < data/add 
add_item < data/add_item
add_item2 < data/add_item
avg_price < data/book_sales
item_io < data/book_sales 
occurs < data/occurs
mysum < data/mysum

for %%i in ( for_ex forcount main_only whilecount) do %%i

runpgms.batは変更しました:

echo on
add < data/add 
add_item < data/add_item
add_item2 < data/add_item
avg_price < data/book_sales
item_io < data/book_sales 
occurs < data/occurs
mysum < data/mysum

for %%i in ( for_ex forcount main_only whilecount) do %%i
pause

業績

3.3コンパイルよりも、ファイルを実行します

  ファイル面倒をコンパイルし、実行することをファイルした場合、あなたは、以下の3つのコマンドを達成するために、すべてのソースコードをコンパイルし、.OBJと.exeのクリアランスをcompile.bat実行メイクファイルを使用することができます。

// 编译目录下所有源码
nmake
// 删除文件夹下所有.obj
nmake clean
// 删除文件夹下所有.obj和.exe
namke clobber

NMAKE

NMAKEの実行結果

nmakeをきれいに

きれいな実行結果をNMAKE

namkeのクロバー

結果クロバーnamke

注:Version_test.hへの必要性「#ifndefのLROUND」:「リンク仕様とエラーC2732」lround「早期仕様紛争の」エラー、あなたが第2のフォルダにコンパイルし、実行inits.cppすると、そこになります"#ifdefのLROUND" に改正しました。

inits.cppディレクトリ

image.png

改正前:

#ifndef LROUND
inline long lround(double d)
{
    return (d >= 0) ? long(d + 0.5) : long(d - 0.5);
}
#endif

更新:

// #ifndef LROUND
#ifdef LROUND
inline long lround(double d)
{
    return (d >= 0) ? long(d + 0.5) : long(d - 0.5);
}
#endif

4.まとめ

  1. コンパイラ環境は、使用のGCC、G ++またはCl缶重要ではありませんが、それは書き込みコードとコンパイルプロセスにとって重要です。
  2. ファイルのリダイレクトとメイクファイルを使用することを学び、より効率的なプログラミングを行うこと。

5.参考文献

  1. [ヒント] C ++プライマー部分について2018年8月8日1.6 Sales_item.hヘッダファイル関連の問題とコミュニティ版のVS2015でソリューション(無料)
  2. ファイル名を指定して実行NMAKE
公開された77元の記事 ウォン称賛25 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_34801642/article/details/103827224