• ベストアンサー

main.cpp以外のcppの追加について

VisualC++を使用し、プログラムを作っています。 そこでプログラムを整理しようと思うのですが、 main.cpp以外もcppを作成し、プログラムを分割することが可能ですよね? cppファイル自体は作ることができるのですが、 作った後どのようにしてmain文から呼び出し?をするのか具体的なことがわかりません。 どのようなワードで検索が引っ掛かるのかもわからないので 掲載しているHP、もしくはやり方を教えてください。 私自身理解が足りていないので、 説明もあやふやなものになっていますがよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2
mitti0157
質問者

お礼

お礼遅くなって申し訳ありません。 不十分な説明の中ありがとうございます。 求めていたものです。 これをもとに組んでみます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

正直なところ何を言っているのかが分かりかねるのですが, 「自分で (main 以外に) 関数を作ってそれを呼び出す」という経験はありますか?

mitti0157
質問者

お礼

すみません。少し勘違いしていました。 main.cppを作って、main.cppファイル中のmain文の外には関数を作ったことはあります。 ただ、新しいcppファイルを作ってというのはないです。 よろしくお願いします。

mitti0157
質問者

補足

ないです。 ソースファイルにmain以外にcppファイルが複数表示されているのは見たことがあるので、それは整理するために分けられているのだと思ったのですが、間違いがあればご教示頂きたいです。

関連するQ&A

  • 他の.CPPファイルに定義した関数を呼び出す方法について

    新規作成したプロジェクトに、 以前自分が作成した.cppファイルと.hファイルを そのまま使えないかと考えています。 (※仮にそのファイルの名前を "define.cpp" "define.h" とします) プロジェクトに新規ファイル main.cpp を作成して、 define.hをインクルードし、 以下のようなテストのプログラムを組みました。 ・../util/define.cpp---------------------- #include <iostream> #include "define.h" void test(){ std::cout<<"test."<<std::endl; } ・../util/define.h------------------------ #pragma once void test(); ・main.cpp---------------------------- #include "../util/define.h" int main(){  test();  return 0; } 上記のソースを VisualC++7.0 でビルドすると、 main.cppの3行目で以下のようなエラーが出ました。 > LNK2019: 未解決の外部シンボル "void __cdecl test(void)" が関数 _main で参照されました VisualC++で「既存項目の追加」という項目より、 実体の定義されたdefine.cppをプロジェクトに追加していないため 当然といえば当然なのですが・・・ C言語でいうところの<stdio.h>等みたいに、 わざわざプロジェクトにCPPファイルを追加しなくても 関数を呼び出せるようには出来ないのでしょうか? 全ての関数と処理をヘッダーファイルに記述すると解決ですが 物凄く見辛いのでそれは避けたいのです。 また、色々なPC間で使っているため(学校のPCなので)、 ツール自体のプロパティを弄らない方法があるのでしたら、 多少面倒でもそちらの方が好ましいです。 追加する方法があるかどうか、 あればその方法をご存じでしたら教えていただければ嬉しいです。 よろしくお願いします。

  • 動画プログラムについて

    以前にも同じ質問をしたのですが、目的と逸れてしまったので質問します。 次のプログラムのMain.cppから関数呼び出しで、動画のファイル名を引き渡して、Movie.cppで動画の再生を行いたいのですが、Main.cppに何を記述して、Movie.cppをどう修正すればいいですか?プログラムが大きく変わってしまっても構いません。Movie.cppは長いのでリンク先に載せます。現状、Movie.cppは単体でも動きます。最終的に制作しているゲームに組み込んでオープニングとして使いたいと思っています。 Main.cpp int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { } Movie.cpp http://1st.geocities.jp/movie_program/ コンパイルが通らない場合には、以下の3点を確認してみてください。 構成プロパティ > リンカ > 入力 > 追加する依存関係 に strmiids.libが入っているか。DirectXと思われるリンカのエラーが山のように出たらこれを疑ってください。 構成プロパティ > 全般 で MFCを利用するようになっているか?(共有DLL、staticどちらでも可)。MFCと思われるリンカのエラーが山のように出たらこれを疑ってください。 構成プロパティ > リンカ > システム > サブシステム が ConsoleでなくWindowsになっているか。「未解決の外部シンボル _main が _mainCRTStartup から参照されました」というエラーが出たら疑ってください。

  • シンプルなC++のコンパイラを教えてください!

    C++、プログラミングの全くの初心者です。。 今、visualC++2005をインストールして、Win32アプリケーションを作成するため、 http://freepg.fc2web.com/cpp/topic_vce_001.html に従って、SDKのインストール→“corewin_express.vsprops”の修正まで来ました。ですが、“corewin_express.vsprops”のファイルが開くことができず、困っています。インストールすべきプログラムを知っている方、その他対処法を知っていたら教えてください。 それから、わたしは高度なプログラムを作ることが目的としているわけではなくて、「点が点滅するプログラムを作る」程度のことができれば十分なのですが、それでもVisualC++を使うのがいいのでしょうか?? メモ帳とコマンドプロンプトでほんの少しjavaをかじっただけなので、VisualC++は私にとっては機能が多すぎて、逆に混乱してしまっています。。というか、正直Win32アプリケーションが使う必要があるのかも理解できていないのが現状です… もっとシンプルなC++のコンパイラ(できればメモ帳つかうもの)があれば教えていただけたらうれしいです。(googleなどで検索して、VisualC++がいいとあったので、ひとまずVisualC++をインストールしました。) 勉強不足で申し訳ないのですが、どうかおねがいします!!

  • AWT Frameを利用するプログラムのmainメソッドを含むクラスについて

    AWTのFrameを継承してWindowプログラムを作成する際に、どんな書籍のサンプルプログラムを見ても、メインクラスがFrameを継承し、その中にmainメソッドが有って、そのmainメソッド内で自分自身のクラスのインスタンスを作成してshowする、といった事を定石のように行っています。 しかし私が思うに、mainメソッドなど含まずFrameを継承してWindow周りの処理を純粋に行うクラスを作成し、プログラムのメインとなるクラス内のmainメソッドからFrameを継承した別クラスのインスタンスを作成・showする方が、よほどスッキリして理解し易いような気がするのですが、どうなんでしょ? そういったサンプルプログラムを作成してみましたが問題なく動作します。ただそういう事をやっている他のサンプルソースが見当たらないので、何となく不安です(笑)

    • ベストアンサー
    • Java
  • C言語 main関数とsum関数の記述順について

    はじめまして。 【苦しんで覚えるC言語】(Web版)でC言語を学んでいる初学者です。 【第1部:C言語基礎編】>【関数の作り方】>【自作関数を作る】の部分(http://9cguide.appspot.com/11-01.html#S2)でつまづいています。 下記のような、1から100までの数字の合計を表示するプログラムが例題として取り上げられています。 しかし、ここが理解できないので、次の【プロトタイプ宣言】に進めずにいます。 例題1  sum関数をmain関数の後に記述した場合(プログラムが実行されない)。 #include <stdio.h> int main(void) { return 0; } int sum(void) { printf("%d\n",(1 + 100) * 100 / 2); return 0; } 例題2  sum関数をmain関数の先に記述した場合(プログラムが実行される)。 #include <stdio.h> int sum(void) { printf("%d\n",(1 + 100) * 100 / 2); return 0; } int main(void) { return 0; } 例題1の場合、【まずmain関数を作り、次にsum関数を作りました。この場合、main関数を解析している段階では、sum関数は発見されておらず、従って、main関数の中では、sum関数を使うことは出来なくなってしまいます。】との説明がありますが理解できません。 コンパイラがどのような順番でプログラムを処理しているか理解できていないので分からないのだと思います。 例題1の場合と例題2の場合の両方について、コンパイラがどのような順番でプログラムを処理しているのかを具体的に教えてください。 どうかよろしくお願い致します。

  • VISUALC++6.0スタンダード版について

    プログラミングのレポートがでたのですがVISUALCは使ったことがなくてさっぱりわかりません。BORLANDCをつかって勉強したことがかなり昔にあるんですがその時はファイル新規作成してプログラムをうって実行させるとエラーまたは結果がでてました。でもVISUALCだとプロジェクトやらなんやらさっぱり解かりません。適当にしてるとファイルがないとかエラーがでるわけないのにエラーが出たりとか実行結果が出なかったりとわけわかりません。プログラミング自体ほとんど初心者です。3乗根をN-R法で求めるプログラムを直ちにつくらないといけないのですがVISUALCの使い方がさっぱりわからず焦ってます。とりあえず #include<stdio.h> int main() { printf("rarara\n"); } というプログラムさせ動かし方がわかりません。 どなたかアドバイスおねがいします。説明書読んでも分厚すぎるし時間がないしで メチャ困ってます。初心者でホントすいませんがおねがいします

  • C言語で分割ファイル先の関数を呼び出す時

    いつもお世話になっております. C言語の関数の呼び出しについて質問があります. main文と同じファイルにある関数は,main文より上に記述している場合は プロトタイプ宣言で呼び出すことが出来ますが,ファイルを関数ごとに分割した場合はどうしたら良いのでしょうか? 例えば main_file.c と function_file.c という2つのファイルがあり, それぞれ main と function という関数を持っているとします. main文からfunction関数を呼び出したい場合, 私はいつも main_file.c 内で include "function_file.c" としていますが, これが一般的な方法なのでしょうか? 問題点や改善点を挙げて頂けると助かります. よろしくお願い致します.

  • GrWinの使用方法について

    こんにちは C言語でプログラムを組み、結果をグラフなどで表示する課題がでました。 グラフはGrWinなどで作れるということがわかり、HPなどで作り方を見ていました。・・が、パソコン初心者ということでなかなか理解ができずに困っています。 とりあえず、実際に動かして、徐々に理解していこうと思いサンプルプログラムを見つてみました。すると、あるサイトでちょうどいいサンプルプログラムを見つけ、それMicrosoft VisualC++を開き新規ファイルに貼り付け実行してみたですが、エラーがでてしまいました。 エラー内容は 「fatal error C1083: インクルード ファイルがオープンできません。'GrWin.h': No such file or directory」 でした・・・・ どうか、アドバイスをお願いしますm(__)m また、使用したサンプルプログラムはこちらです。 #include <GrWin.h> int main(){ GWinit(); GWopen(0); GWindow(-1,-1,1,1); GWline(-1,-1,1,1); }

  • 最初から・・・・

    現在C++を学んでいる身です。 あるサイトを参考に学習しているのですが、以下に示すサイトで躓きました。 http://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html 自分は逆ポーランド表記は学習済みなのでそれ自体は理解できます。 それに以前C++をあるサイトで一通り学習はしたのですが、やりたりなくて現在も上のサイトを参考にさせてもらっています。 上で示すサイトに逆ポーランド表記についての計算プログラムがC++によって書かれています。 以下はそのプログラムについての質問をしていきます。 まずStack.hとmain.cppに分かれていますが、Stack.hの内容は理解できるのですが、main.cppで疑問がでてしまいました。しかも最初からです。 まず  IntStack ostack( argc - 1 );  と記述していますが、これはIntStackクラスをostackでインスタンス化を行っています。 しかし、ここでコンストラクタが呼ばれますが、IntStackクラスのコンストラクタは最初から引数に指定がされているため、このように記述した場合どのような動作を行うか予想がつきません。 それにこの記述では argc - 1 となっていますが、 まずargcには何が入っているのでしょうか?そこから不明です。 次にこのプログラムは外部から逆ポーランド表記で入力したものを計算することが目的にもかかわらず、キーボードからの入力部分が見つからないのですが、どこで行っているのでしょう? この2つの疑問がでてきてしまったのですが、最後にもう1つ発生してしまいました。 それはこのプログラムを全てコピーしてもスタックの整合性確認の部分のエラーメッセージが表示されてしまい、実行することができません。どうしてなのでしょう? 環境は Visual Studio 2005.net C++です。 よろしくお願いします

  • c++ , template , ファイル分割 , 助けてください...

    //-----------------coord.h------------- template <class type> class coord { type v[3]; public: coord(void); void Show(void); }; //-----------------main.cpp------------ #include<iostream> #include"coord.h" using namespace std; int main(void) { coord<double> ob; ob.Show(); return 0; } //----------------------coord.cpp----------- #include<iostream> #include"coord.h" using namespace std; template <class type> coord<type>::coord(void) { v[0]=v[1]=v[2]=0; } template <class type> void coord<type>::Show(void) { cout << "hello" << endl; } 同一フォルダ内に上記のファイルが 3 つあります. つまり上の 3 つのファイルを分割してコンパイルさせたいです. この状態で...MS-DOSプロンプトからコンパイルします. C:\test>bcc32 -c coord.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland coord.cpp: C:\test>bcc32 -c main.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland main.cpp: C:\test>bcc32 -emain main.obj coord.obj Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'coord<double>::coord<double>()' が未解決(C:\USERS\TAITO\PR OG\CPP\TEST\MAIN.OBJ が参照) Error: 外部シンボル 'coord<double>::Show()' が未解決(C:\USERS\TAITO\PROG\CPP\TE ST\MAIN.OBJ が参照) すると, このようなエラー文が出てしまい 実行可能ファイルができません. コンパイラはbccです. 原因が全く分かりません. 助けてください... ちなみに, 分割せずにコンパイルすると通ります. 自分は c 言語での分割コンパイル経験はあるので それをそのまま c++ 言語でも用いているのですが, 何か変えなければならないのでしょうか?