dポイントプレゼントキャンペーン実施中!

以下のプログラムですが
#include <stdio.h>
int main()
{
Int col;
char i;

scanf( "%d", &col );

for( i = 0 ; i < 26 ; i++ ){
if( i > 0 && ( i % col ) == 0 )
printf( "\n" );

printf( "%c", 'a' + i );
}

return 0;
}
以上のプログラムをgccでコンパイルしました。
コンパイルするために入力した文字→  gcc p.c -o p.exe
以下のエラーがでてコンパイルできません。
p.c: In function `main':
p.c:4: error: `Int' undeclared (first use in this function)
p.c:4: error: (Each undeclared identifier is reported only once
p.c:4: error: for each function it appears in.)
p.c:4: error: syntax error before "col"
p.c:7: error: `col' undeclared (first use in this function)
p.c:17:2: warning: no newline at end of file
 以上なぜコンパイルができないのですか?
よろしくお願いいたします。

A 回答 (7件)

そんな難しい英語でもないのですから、読みましょうよ。



>p.c: In function `main':
>p.c:4: error: `Int' undeclared (first use in this function)
>p.c:4: error: syntax error before "col"

main関数内、ソースファイルの4行目に"Int"という宣言されていないのものがある。
上記のエラーにより"col"が文法エラー。

>p.c:7: error: `col' undeclared (first use in this function)

ソースファイルの7行目に"col"という宣言されていないものがある。


Intじゃなくて、intじゃありませんか?
大文字・小文字は区別しますが…。

どこかで
#define Int int
とか、
typedef Int int;
とかしていない限りはエラーでしょう。
    • good
    • 0
この回答へのお礼

 皆様ご回答誠にありがとうございました。
4行目エラーと出ていたのに、丸投げ質問をしてしまいました。
 ご指摘通りIntをintに変えたらOK^^でした。
今度からちゃんと見て質問します。

お礼日時:2011/08/23 21:35

i を char にする理由は, はっきり言って思いつきません>#6.



全く思いつかないわけじゃないんだけど,
「とんでもなくスタックがひっ迫していて char じゃないとそもそも動かない」
という状況しか出てこない. そして, スタックアラインメントの関係でそのような状況は (完全に否定できないものの) おそらく非常に作りにくい.

いずれにしても
・int 以下の型の値は何かするたびに int に自動的に変換される
・printf の 2つ目以降の引数は可変長引数の ... の部分だから int に自動的に変換される
・そもそも C において 'a' の型は int
なので, i を int にできるなら int の方がはるかに普通.
    • good
    • 0

たびたび、フォロー(ツッコミ)ありがとうございます>#5


わりとどうしようもない間違いかますことが……

ループ変数にcharは…確かに普通は見ませんね…。
>printf( "%c", 'a' + i );
でcharにした…んでしょうか……。intでも問題ありませんけど……。
    • good
    • 0

ど~でもいいですが, typedef なら


typedef int Int;
でしょう>#1.

しかし, ループ変数を char にするってのも珍しいスタイルだなぁ....
    • good
    • 0

すでに回答が出ているように、intと書くべきところにIntと書いてしまっているからです。


Cでは、大文字と小文字は厳密に区別します。
もし、曖昧に扱う癖がついているのなら、早い段階で矯正しましょう。

あと、最後の警告については下記の理由かと思います。
http://www.kijineko.co.jp/tech/superstitions/las …
    • good
    • 0

> なぜコンパイルができないのですか?


 変数宣言部の「Int col;」が
「int」ではなく「Int」と、大文字に成ってしまっているから
ではでは…
    • good
    • 0

この先お世話になるエラーメッセージです。

人に頼らずに読めるようになりましょう。

> p.c:4: error: `Int' undeclared (first use in this function)
よく出会うエラーです。
undeclared : 宣言されていない。
ということで、宣言されていない変数や関数を使おうとするときに発生します。
主な原因は
・必要なヘッダを#includeしていない
・宣言と使用箇所の順番違う
・只の入力間違い
です。

何を使おうとしたのが問題なのか、というのは Int だと言っています。

ここまででわかったのではないでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!