こんばんは。
VC++6.0を使い、C言語の勉強をし始めました。新規プロジェクト→Win32 Console Application を作成し、簡単なプログラムを作成しています。
最初からあるソースファイルはコンパイル、実行できます。しかし、後から自分で追加したソースファイルは
error C2065: 'printf' : 定義されていない識別子です。
という、エラーが出てしまいます。何かが、関連付けられていないのでしょうか?それとも、新規プロジェクトを作成しなければいけないのでしょうか?
私は、VC++が初めてなので、ぜんぜんわかりません。よろしくお願いします。
No.2ベストアンサー
- 回答日時:
えっとコードが書かれていたので
まず、自分の書いたコードの場所にstdafx.hがある事を確認して下さい。
ちなみにご存知だとは思いますが、ダブルクォートで囲まれたヘッダファイルはincludeパスから探しません。
#include <stdio.h>
#include "stdafx.h"
はNGです。ヘッダのインクルード順が間違っています。
#include "stdafx.h"
#include <stdio.h>
stdafx.hを先にインクルードしてあげてください。
stdio.hのインクルード文はstdafx.hに書いてあげるのもアリです。
さらに補足ですがprintf関数はstdio.hに明記されています。
その他関数もかかれていますので、見てみるとヘッダファイルの書き方が学べます。
ついでに何でヘッダファイルが必要なのかも。
C言語を覚えられると大概の言語をすんなり受け入れられるようになりますので(オブジェクト指向はちと違いますが)頑張って下さい。
この回答への補足
どうもありがとうございました。
教えていただいた様にヘッダファイルのインクルードの順番を
#include "stdafx.h"
#include <stdio.h>
にしたら、以前のエラーは消えました。
しかし、今度は「 aa.obj : error LNK2005: _main はすでに a.obj で定義されています 」というエラーが出てしまいます。a.objは最初からあるソースファイルです。aa.objは追加したソースファイルです。
ちなみに、両方ともmain関数があります。ひょっとしたら、1つのプロジェクトにつき、main関数のあるソースファイルは1つだけでないと駄目なのですか?
もし分かるようだったら、ご返事ください。よろしくお願いします。
No.5
- 回答日時:
純粋にCを勉強するのであればUNIXの方がいいと思います。
もしくはMS-DOS(笑)cl.exeでコンパイルしてあげるのもいいですがUNIXの方が勉強しやすかったです。
なにげに、C言語ではオーバーライド、オーバーロードなど便利な機能は使えません。変わりにポインタを使いまくったりします。
Java楽ですからね。ライブラリも揃ってますし。
どうも、ご返事ありがとうございます。
C言語では、printf関数など、引数がたくさん取れますね。あれは、どういう仕組みになっているのでしょうか?
cl.exeというのも、本を調べてやってみました。あれは、Javaのコマンドラインと同じですね。
どうも、ありがとうございました。またよろしくお願いします。
No.4
- 回答日時:
> Cはあまり経験がなく、短いソースを書くのに、いちいち新規プロジェクトから開くのもなぁ~と思っていたのですが。
。。駄目みたいですね。コマンドライン・コンパイラを使ってはいかがでしょう。
フリーソフトの、BCPadというものと、Borlandのフリーコンパイラを使ってみたら、ものすごく簡単にできるようになりました。
Windowsプログラミングでもやるようになったら、VC++を使ってみようと思います。
どうもありがとうございました。
No.3
- 回答日時:
> ひょっとしたら、1つのプロジェクトにつき、
> main関数のあるソースファイルは1つだけで
> ないと駄目なのですか?
mainであろうがなかろうが、同じ名前の関数が2つ以上あってはなりません。
どうも、ご返事ありがとうございます。
そうなんですか。私はJavaの開発をしていたため、同じ関数(メソッド)がいくらあっても良かったので。。Cでは、クラスがないので、関数名が同じだと駄目なのですね。勉強になりました。
どうもありがとうございました。Cはあまり経験がなく、短いソースを書くのに、いちいち新規プロジェクトから開くのもなぁ~と思っていたのですが。。。駄目みたいですね。
どうもありがとうございました。またよろしくお願いします。
No.1
- 回答日時:
ヘッダが読み込まれていないためではないですか?
#include 等はどうなっていますか?
他のソースファイル先頭の方にあるファイルを指定してみてください。
この回答への補足
どうも、ご返事ありがとうございます。確かサーバのときも返事をいただいたと思うんですが、どうもありがとうございました。
以下がソースコードです。"stdafx.h"というのは、VC++だとインクルードしなくては、いけないらしいです。
#include <stdio.h>
#include "stdafx.h"
int main(int argc, char *argv[])
{
printf("Hello !!");
return 0;
}
以下がエラーです。
--------------------構成: a - Win32 Debug--------------------
コンパイル中...
aa.cpp
D:\Applications\Microsoft Visual Studio\MyProjects\a\aa.cpp(6) : error C2065: 'printf' : 定義されていない識別子です。
cl.exe の実行エラー
aa.obj - エラー 1、警告 0
ちなみに、ちゃんとコンパイル、実行できたファイルが以下となります。
#include "stdafx.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("1年間の秒数は %dです",60*60*24*365);
return 0;
}
何回やっても(違うファイルでも)同じエラーが出てしまいます。もし、VC++をご存知だったら、教えてください。よろしくお願いします。
どうもありがとうございました。またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プロジェクトフォルダ名の変更...
-
VB.NETで他のプロジェクトで作...
-
VisualBasicを保存するときにで...
-
ACCESSのEXEを作るのは可能...
-
コンパイルするときに、ファイ...
-
VB6 SP6 アイコンとフォームに...
-
無知な私に教えて下さい。
-
.NETとc関数の両方を使うコン...
-
バッファとは何ですか
-
フルパスから最後のディレクト...
-
コマンド(例えばls)の出力結果...
-
Acccess レポートをグループ別...
-
どんなプログラムを書いても指...
-
新規作成ファイルパスが有効か...
-
ファイルやディレクトリの存在...
-
options +indexesで文字化け
-
ファイル出力の場所を指定
-
windows.hがincludeされない
-
LINK : fatal error LNK1104に...
-
jarファイルとjava.exeの関連付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで他のプロジェクトで作...
-
ACCESSのEXEを作るのは可能...
-
ソースから参照しているOCXの一...
-
エラーの原因は?「この関数の...
-
VB6で、非表示モジュール(?)の...
-
コンパイルするときに、ファイ...
-
C#のクラスをVB.netで使用したい!
-
VB.NETでActiveX(OCXファイル)作成
-
VC++でexeファイルが作成できま...
-
同じソースコードなのにバイナ...
-
VS2010 ProductVersion 変更
-
プリコンパイル?
-
VC++ 2005 Intellisenseを更新....
-
他の.CPPファイルに定義した関...
-
Visual Stadio2008 Releaseビル...
-
Visual Studioを使ったフォーム...
-
【C#】exeファイルに複数アイコ...
-
VB6 exeファイルのプロパティの...
-
コンパイルエラー「include フ...
-
関数がDLLファイル内に見つかり...
おすすめ情報