C ++入門:ソースのコンパイラの取扱説明書
1.背景
ソースは公式の例を比較したかった後に最近「C ++プライマー中国語版(第5版)」を最初の章を読み、書かれたソース、それは大体それをコンパイルして実行する方法であるかを理解した後、ドキュメントは、英語、公式記録であることがわかりましたソース。
2.関連する情報と環境
C ++プライマー公式ダウンロード出典:
http://www.informit.com/store/c-plus-plus-primer-9780321714114
ダウンロード版 | 説明 |
---|---|
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のファイルディレクトリ説明:
- 1フォルダC ++ primer19章に代わって19元をフォルダに移動します。
- Version_test.h源は、Sales_data.h 1参照Version_test.hのフォルダとして、ヘッダ部が必要です。
- CompilerNotes.pdfとVisual Studio 2012 README.PDF全体的なドキュメント。
- フォルダ19のフォルダに1つのトラバース、内部フォルダにジャンプするrunp.bat runpgms.bat、内部runpgms.batを行います。
- NMAKEメイクファイルとMS_makefile_templateは、すべてのソースコードディレクトリ用にコンパイルされたデフォルトの実行可能ファイル、であり、対応する.exeファイルを生成します。
第1章フォルダディレクトリ説明:
- CPPファイル記憶部行うデータ入力フォルダにデータが必要。
- 最初の章では、すべての.cppファイルのソースです。
- Sales_item.hは、必要なヘッダファイルを実行するためのcppファイルの一部です。
- .exeファイルを実行するためのrunpgms.bat、それがデータフォルダに自動的にインポートデータ意志、その結果を出力します。対応する.exeファイルなしでこのフォルダは、runpgms.batが失敗した場合。
- README.txtドキュメントのセクション
- 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:
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:
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
注:Version_test.hへの必要性「#ifndefのLROUND」:「リンク仕様とエラーC2732」lround「早期仕様紛争の」エラー、あなたが第2のフォルダにコンパイルし、実行inits.cppすると、そこになります"#ifdefのLROUND" に改正しました。
改正前:
#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.まとめ
- コンパイラ環境は、使用のGCC、G ++またはCl缶重要ではありませんが、それは書き込みコードとコンパイルプロセスにとって重要です。
- ファイルのリダイレクトとメイクファイルを使用することを学び、より効率的なプログラミングを行うこと。