• ベストアンサー

|\ はどんな演算子?

SDKのヘッダーファイル中で、 |\ という記述を見かけました。 フラグを複数指定して、論理和演算をしているように見えましたが、実際のところどうなんでしょうか。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★修正と追記。 ・行末の『\』文字は、プリプロセッサ命令ではなく記述ルールでした。 ・あるブロック処理を #define で定義すると下のように出来ます。 サンプル: #define LineCount(count,fp)\ {\  char buff[ 256 ];\  \  rewind(fp);\  \  for ( count = 0 ; fgets(buff,sizeof(buff),fp) != NULL ; count++ ){\   ;\  }\ } ・上記の #define はファイル・ストリームから行数をカウントするマクロです。  関数みたいですがマクロ定義です。  『LineCount(count,fp);』として呼び出すと変数『count』に行数が代入されます。 ・以上。おわり。

ggaogg
質問者

お礼

うわーすごい使い方教えていただきました、ありがとうございます。 なんだかレベルアップできた気がします。 これにて〆させていただきます。

その他の回答 (2)

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

\は#defineの記述の継続行を示します。 #define A X|Y|\     Z と #define A X|Y|Z は等価です。

ggaogg
質問者

お礼

お手数かけました・・。 1番目の方と同時にお答えいただいたみたいですが、どうもすみませんでした。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★ヘッダファイル内で #define の記述ですよね。 ・『#define』の記述が1行で納まらない場合は行末に『\』文字を追加することで  次の行に続く指定になります。→プリプロセッサ命令の1つです。 ・例えば  #define Percent(a,b) ((a) * 100 / (b))  というマクロ定義があったとすると  #define Percent(a,b)\   ((a)\   * 100\   / (b))  という4行で定義させることが出来ます。 ・この場合は1行で定義できますが、長い場合は複数行に分けて定義することで  見やすくなります。 ・よって『|\』というのは、論理和演算の途中を行分割していると思われます。  つまり、次の行にまだ定義が続いているのではありませんか?  質問内容の情報不足のため上記以外は思い当たりません。→あっているかな? ・以上。おわり。→『プリプロセッサ命令』を検索しましょう。

ggaogg
質問者

お礼

その通りです、#defineが続いています。 そうでしたかーいやーありがとうございました。 考えるときの視野が狭かったようです。修行せねば・・