• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プリプロセッサのエラー対策がわからない状態)

プリプロセッサのエラー対策がわからない状態

このQ&Aのポイント
  • VS.2005でプログラミングをしている際に、プリプロセッサで起こるエラーの対策が分からない状態です。
  • エラーメッセージは「warning C4067: プリプロセッサ ディレクティブの後に余分な文字がありました - 改行が必要です」です。
  • エラーの改善には、/Zaコンパイラオプションを使用する方法があるようですが、具体的な手順がわかりません。ソースコードも記載しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#ifdef/#ifndef は, 与えられたものが「マクロとして定義されているかどうか」をテストするプリプロセッサ指令です. んで, 例えば #define _TEXT(x) __T(x) というプリプロセッサ指令で定義されているのはあくまで「_TEXT」なんです. これで #1 とつながった.

DEADSPACE566
質問者

お礼

回答ありがとうぎざいます。 プリプロセッサ命令の理解が進みました。

その他の回答 (3)

回答No.3

コンパイラが余分な文字があることと その場所まで教えてくれてるのだから、、、 #ifndef _TEXT // _TEXTが定義されていなければ #define _TEXT(x) __T(x) // _TEXTを__Tとして定義する #endif

DEADSPACE566
質問者

お礼

上記のとおりにデバッグを行ったら警告が消えました。 ご指摘ありがとうございます。 多分、この問題は自分のプリプロセッサ命令の理解不足だと思います。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あなたはこの #ifndef で何をしたいのですか? #ifndef がどのような機能を持っているのかわかっていますか?

DEADSPACE566
質問者

お礼

回答ありがとうございます。 実は参考書を読んでそれでプログラムを組んでいます。 しかし、その参考書で必要になるサンプルプログラム内で問題がるようで・・・ その参考書、時々プログラム部分が凡ミスして載せてあるんですよね。 自分はまだプリプロセッサ命令、IDE互換対応、OS互換対応プログラムは末体験なんで困っています。 まぁ、ただの愚痴なんですけどね。

DEADSPACE566
質問者

補足

#ifndef XXXはXXXが定義されていないとその先を実行するというプリプロセッサ 命令だと思います。 #ifndef _TEXT(x)というのは通じないみたいです。 まだ調べていないのですが #ifndef _TEXT(x)←引数付にして宣言するのは駄目 なようですね。 この引数の部分を取り去るとコンパイラが通りました。 単なるプリプロセッサの理解不足のような気がします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

マクロとしては _TEXT じゃないか?

DEADSPACE566
質問者

補足

TEXTじゃなくて_TEXTだということでしょうか? 文ば短いのでよく分からないです。 自分の質問内容は、#ifndef x を#ifndef _TEXT(x)とすると上記の警告がでるのでそれをどうすればいいのか?というこです。 あと題名にエラーとありますが警告でした。 すみません。

関連するQ&A

専門家に質問してみよう