メモ帳兼日記帳なブログ

Freepage List

Rakuten Ranking

Shopping List

May 21, 2009
XML
カテゴリ:メモ
コンパイルの条件って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) | コメントを書く

PR

Profile


κгοηοδ

Calendar

Recent Posts

Favorite Blog

自作パソコンを作ろ… おったきーさん

Comments

 实体娃娃@ Re:空気読めってね(09/15) 实体娃娃www.shitiwawa-8.com www.chongqi…
 hhghvjbch@ Re:空気読めってね(09/15) h d v h g f d g g
 琳琳哒@ 123456789 qzVJUwVIgJyQDKhさん >comment3, &lt;s…
 琳琳哒@ 123456789 tyqkjhzmaeさん > &lt;small&gt; &lt;a h…
 琳琳哒@ 123456789 qzVJUwVIgJyQDKhさん >comment3, &lt;s…

Headline News

Keyword Search

▼キーワード検索


Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.