質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

2605閲覧

C言語で以下のコンパイルエラーが起こります。

zakonokiwami

総合スコア5

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2020/06/07 11:44

いつもお世話になってます。

C言語を勉強しています。コンパイラは「bcc32」を使っています。
ソースコードをコンパイルしてオブジェクトコードにする時以下のコードでエラーが起こります。

#include <stdio.h>

main()
{
printf ("温度変換プログラム\n");
int test = 1;
printf ("%d",test);
return 0;
}

エラー内容 6: ここでは宣言はできない(関数 main )
*** 1 errors in Compile ***

Q1.上記は printf("温度変換プログラム\n"); の後で int 型で変数 test を定義していることで起こったエラーだと思いますが、なぜエラーが起こるかわかりません。

Q2.「printf 関数ははコンパイラで標準で準備している関数でC言語で準備しているものではない」と書いてありましたが理解できませんでした。

質問もしどろもどろかもしれませんが、何卒よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず1だけですみません。
bcc32は古いソフトウェアで昔のCの規格にしか準拠していないため、関数の途中での変数の宣言が不可能です。
なのでint test = 1;の行を一番上に持っていくと動くと思います。

投稿2020/06/07 11:49

kuuote

総合スコア705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuuote

2020/06/07 11:50

特別な事情でも無ければMSVCやGCC等の別のコンパイラを使うというのも手です。
zakonokiwami

2020/06/07 13:07

kuuoteさん ご返信頂き、誠にありがとうございます。 Cの規格を調べC50(古い)、C99(新しい)があるということ、 bcc32は古い規格に準拠するものということで理解しました。 >特別な事情でも無ければMSVCやGCC等の別のコンパイラを使うというのも手です。 特段理由はないのですが、新しい規格で学んだソースコードを古い規格に準拠したコンパイラだとエラーが起こってしまうこともあるかと思い、コンパイラの準拠する規格に関係なくソースコードがかけたほうがいいと思っています。この考え方は変えたほうがよろしいでしょうか。 Q2. については説明が不十分で申し訳ないのですが、bcc32というコンパイラが独自で関数を作ってライブラリで保持しているものでユーザーは自由に関数を呼び出せると思ってよろしいのでしょうか。 誠にお手数ですが、お手すきの際にでもご返信お待ちしております。
kuuote

2020/06/07 13:23

基本的に新しい規格は古い規格の良くなかった所を改善した物なので、自分で選べるなら新しいものを使うべきだと私は思っています。(古い規格を知るのはCに慣れてからでいいと思います)詳しくはこの記事を見てみてください。 https://qiita.com/raccy/items/8fd7765d1d22f29e5d82 Q2についてですが、C言語としてはprintfの仕様だけが定まっており、基本的にはコンパイラに付属の標準ライブラリに実装があるという話です、もちろん自由に呼び出せます。
zakonokiwami

2020/06/07 23:43

お世話になっております。 早々のご返答ありがとうございます。 URL等の添付ありがとうございます。 Q2についてご返信頂き、ありがとうございます。 説明頂いたのに申し訳ないですが、「printfの仕様だけが定まっており」が理解できませんでしたが、これは学習していく上でわかっていくことなのかなと思います。 本件クローズとします。誠にありがとうございました。 今後ともよろしくお願い致します。 以上
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問