
こんばんは。
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で質問しましょう!
似たような質問が見つかりました
- ノートパソコン パソコンのファイル追加履歴について 1 2022/05/07 15:35
- その他(コンピューター・テクノロジー) FPGA構成データ、ソフトウェアデータ をボード Zybo Z20 用に転送する方法 1 2023/07/25 18:19
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- WordPress(ワードプレス) Wordpress 複数プラグインの不具合? 1 2022/10/09 21:52
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- その他(メールソフト・メールサービス) Thunderbird にアカウントの追加ができない 1 2022/09/27 17:39
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ソースから参照しているOCXの一...
-
DirectXのパス設定
-
エラーの原因は?「この関数の...
-
Visual Studioでプロジェクトが...
-
srand48? drand48?
-
スタートアップにファイルを登...
-
VC++(VS)でコンソールアプリ(...
-
VB.NETで他のプロジェクトで作...
-
VC++で、ソースファイルを追...
-
Visual Studioランタイム組込み...
-
.net を用いて RS232C通信を行...
-
borland c++6.0 英語化時の空文字
-
ユーザー名・作成者について(Vi...
-
ディストリビューションウィザ...
-
VC++でexeファイルが作成できま...
-
DLLのスタティックリンクは可能?
-
BCBで作成したDLLを、VC++で静...
-
C言語初心者の質問失礼します。
-
バッファとは何ですか
-
どんなプログラムを書いても指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで他のプロジェクトで作...
-
エラーの原因は?「この関数の...
-
ソースから参照しているOCXの一...
-
ACCESSのEXEを作るのは可能...
-
VC++でexeファイルが作成できま...
-
VS2010 ProductVersion 変更
-
他の.CPPファイルに定義した関...
-
VB.NETでActiveX(OCXファイル)作成
-
コンパイルするときに、ファイ...
-
VB6で、非表示モジュール(?)の...
-
libssh2のインクルード
-
プロジェクトフォルダ名の変更...
-
VisualBasicを保存するときにで...
-
Visual Studioでプロジェクトが...
-
プリコンパイル?
-
VBのコンパイルしてときにbinフ...
-
EXEをつくるとレジストリが...
-
VB6.0の別名保存について
-
Visual Studio2008でヘッダファ...
-
VB6.0
おすすめ情報