【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22964

#ifdefとは?
投稿者---初心者(2005/09/06 13:45:36)


#ifdefは、デバック時に使用すると聞いたことがありますが、
実際にソースを見ると、違うような気が。。

どのように使うのでしょうか?

よろしくお願いいたします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:#ifdefとは? 22965 とおり 2005/09/06 14:18:18


No.22965

Re:#ifdefとは?
投稿者---とおり(2005/09/06 14:18:18)


>#ifdefは、デバック時に使用すると聞いたことがありますが、
>実際にソースを見ると、違うような気が。。
>
>どのように使うのでしょうか?
>
>よろしくお願いいたします。

こんな使い方をします。
http://www.wakhok.ac.jp/~kanayama/C/03/node112.html

#「デバッグ時に使用する」ではなく「デバックによく利用される」といった方が良いでしょう。


この投稿にコメントする

削除パスワード

No.22966

Re:#ifdefとは?
投稿者---初心者(2005/09/06 14:29:46)


>>#ifdefは、デバック時に使用すると聞いたことがありますが、
>>実際にソースを見ると、違うような気が。。
>>
>>どのように使うのでしょうか?
>>
>>よろしくお願いいたします。
>
>こんな使い方をします。
>http://www.wakhok.ac.jp/~kanayama/C/03/node112.html
>
>#「デバッグ時に使用する」ではなく「デバックによく利用される」といった方が良いでしょう。

とおりさん、ありがとうございました。
上記を参照にしてもう一度勉強してみます。



この投稿にコメントする

削除パスワード

No.22967

Re:#ifdefとは?
投稿者---とおり(2005/09/06 14:33:23)


>とおりさん、ありがとうございました。
>上記を参照にしてもう一度勉強してみます。

ついでに↓の"-D"オプションについて見てみると何故デバッグに有用かが分かるかもしれません。
http://x68000.q-e-d.net/~68user/unix/pickup?keyword=gcc&target=command&partial=on&regexp=on&case=off


この投稿にコメントする

削除パスワード

No.22968

Re:#ifdefとは?
投稿者---まきじ(2005/09/06 16:25:27)


>ついでに↓の"-D"オプションについて見てみると何故デバッグに有用かが分かるかもしれません。

初心者さんが、GCC を使ってるとは限らないので、
「GCCなら」とかを付けるべきかと。


この投稿にコメントする

削除パスワード

No.22984

Re:#ifdefとは?
投稿者---かずま(2005/09/08 10:42:20)


> 初心者さんが、GCC を使ってるとは限らないので、
>「GCCなら」とかを付けるべきかと。

-D オプションは GCC でしか使えないという意味でしょうか?
-D オプションの使えない処理系を一つでもいいから挙げてみて下さい。


この投稿にコメントする

削除パスワード

No.22986

Re:#ifdefとは?
投稿者---tetrapod(2005/09/08 13:48:14)


具体名を挙げちゃって良いのでしょうか?

Renesas の SH/H8 Cross Compiler は -D オプションに相当するものが
-DEFINE=AAA=BBB,CCC=DDD
となっています。
上記例は #define AAA BBB と #define CCC DDD をコマンドラインから指定の意味。
しかも -DEFINE オプションを複数回指定できないので、複数個の外部定義を埋めようとすると
唯一指定できる -DEFINE= の末尾に , を用いて追加することになります。

cross-gcc 用に作った Makefile をずいぶん書き直す羽目となりました。
最適化は gcc の比ではなく素晴らしい出来なんですけどねー。



この投稿にコメントする

削除パスワード

No.22988

Re:#ifdefとは?
投稿者---pi-ta(2005/09/08 14:06:38)


えー、tetrapodさんに先に書かれてしまいましたが、途中まで書いたので
私も投稿します。

>-D オプションの使えない処理系を一つでもいいから挙げてみて下さい。

これはどういう意味なのでしょうか?

1.コマンドラインでマクロ定義できないコンパイラ
2.オプション指定で「-D」というのがないコンパイラ

1.の場合だと今のコンパイラはたいてい対応していると思います。
初期の頃のCコンパイラには出来ないのがあったように記憶していますが
具体的にどれだったかというのは覚えていません。

2.の場合では、たとえば私が使っているコンパイラですと
Renesas Technology の Hew では -DEFINE あるいは -DEF
YellowSoft社製のCコンパイラでは /M
がそれぞれマクロ定義用オプションです。
ほかにももっとあるかもしれませんね。



この投稿にコメントする

削除パスワード

No.23002

Re:#ifdefとは?
投稿者---まきじ(2005/09/08 20:57:54)


>-D オプションは GCC でしか使えないという意味でしょうか?
>-D オプションの使えない処理系を一つでもいいから挙げてみて下さい。

他の処理系にでも、gcc の -D と同じ意味を持つオプションはあるでしょう。
Visual C++ Toolkit 2003 の場合は /D です。

# 屁理屈を言えば、- ではなく / ですので、vctk だと -D は使えない。

「「プリプロセッサの定義」をするオプション」などと表現すれば
良いと思いました。
RiSK さんの仰ってる様に、確かに「参考」にはなる情報です。


この投稿にコメントする

削除パスワード

No.23005

Re:#ifdefとは?
投稿者---Hermit(2005/09/08 21:59:27)


># 屁理屈を言えば、- ではなく / ですので、vctk だと -D は使えない。
2003 は削除してしまって今無いので試せませんが、
2005ベータ版では -D は使えるみたいですが。


この投稿にコメントする

削除パスワード

No.23008

Re:#ifdefとは?
投稿者---まきじ(2005/09/08 22:22:02)


># 屁理屈を言えば、- ではなく / ですので、vctk だと -D は使えない。

すいません、間違いでした。
VCTK2003で、-D でも問題ありませんでした。


この投稿にコメントする

削除パスワード

No.22995

Re:#ifdefとは?
投稿者---RiSK(2005/09/08 16:55:41)


>「GCCなら」とかを付けるべきかと。

gccだろうと,その他のコンパイラだろうと,参考になる情報だと思いますよ。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧