|
カテゴリ:メモ
コンパイルの条件ってmakefile作れば良いとか言われるが、よく分かんないし、めんどくさいので、VisualC++2008ExpressEditionでやってみる方法のメモ。
以下のようなソースファイルを、作って、拡張子がcppのファイルは、ソリューションエクスプローラのソースファイルの所に入れる。拡張子がhのファイルは、ヘッダーファイルの所に入れる。 これだけで、後はコンパイラが勝手にコンパイルしてくれる。 超楽w //main.cpp #include<stdio.h> #include"sub.h" void main(void){ int ans; ans=factorial(5); printf("ans=%d\n",ans); } //sub.h #ifndef __SUB_H #define __SUB_H int factorial(int num); #endif //sub.cpp #include "sub.h" int factorial(int num){ if(num<0)return(-1); int i,ret=1; num++; for(i=1;i<num;i++){ ret*=i; } return(ret); } 一応説明しておくと、sub.hの、#ifndefは、もし、__SUB_Hがdefine(定義)されていなければ、#endifまでをコンパイルするって意味。これがないと、色んなファイルで、sub.hを定義していた場合、複数回ファイルが読み込まれることになってしまい、コンパイラが、何回も定義しやがってって怒ってくれるw こういう風に、一回しか読み込めないようにする記述部分を、インクルードガードと言います。また、BorlandC++とかだと確か使えない、コンパイル方法を指定するワードに「pragma」ってのがある。VisualStudioだとこれも使えて、インクルードガードを付けたいヘッダファイルの一番上に #pragma once って書いておくと、一回しか読み込まなくなる。 具体的に今回のソースをこれに変えると、 //sub.h #pragma once int factorial(int num); って感じになる。VisualStudioだけを使うなら、これの方が絶対楽だねw 後もう1個言っておくと、#define は、普段 #define DELTA 0.0001 みたいな感じで使うが、この0.0001って部分が無くって、 #define DELTA ってなってたら、ソース中にある全てのDELTAって単語を何もない状態に置換してしまうって意味になる。 俺は昔、この意味が分からなくて苦労しました・・・・TT 検索:2個以上のファイル分割コンパイルhcppファイル お気に入りの記事を「いいね!」で応援しよう
Last updated
May 22, 2009 02:31:14 AM
コメント(0) | コメントを書く
[メモ] カテゴリの最新記事
|
|