- ベストアンサー
|\ はどんな演算子?
SDKのヘッダーファイル中で、 |\ という記述を見かけました。 フラグを複数指定して、論理和演算をしているように見えましたが、実際のところどうなんでしょうか。
- みんなの回答 (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』に行数が代入されます。 ・以上。おわり。
その他の回答 (2)
- mac_res
- ベストアンサー率36% (568/1571)
\は#defineの記述の継続行を示します。 #define A X|Y|\ Z と #define A X|Y|Z は等価です。
お礼
お手数かけました・・。 1番目の方と同時にお答えいただいたみたいですが、どうもすみませんでした。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★ヘッダファイル内で #define の記述ですよね。 ・『#define』の記述が1行で納まらない場合は行末に『\』文字を追加することで 次の行に続く指定になります。→プリプロセッサ命令の1つです。 ・例えば #define Percent(a,b) ((a) * 100 / (b)) というマクロ定義があったとすると #define Percent(a,b)\ ((a)\ * 100\ / (b)) という4行で定義させることが出来ます。 ・この場合は1行で定義できますが、長い場合は複数行に分けて定義することで 見やすくなります。 ・よって『|\』というのは、論理和演算の途中を行分割していると思われます。 つまり、次の行にまだ定義が続いているのではありませんか? 質問内容の情報不足のため上記以外は思い当たりません。→あっているかな? ・以上。おわり。→『プリプロセッサ命令』を検索しましょう。
お礼
その通りです、#defineが続いています。 そうでしたかーいやーありがとうございました。 考えるときの視野が狭かったようです。修行せねば・・
お礼
うわーすごい使い方教えていただきました、ありがとうございます。 なんだかレベルアップできた気がします。 これにて〆させていただきます。