ab.com コミュニティ https://www.activebasic.com/forum/ |
|
複数行コメントで https://www.activebasic.com/forum/viewtopic.php?t=204 |
ページ 1 / 1 |
作成者: | Mario2 [ 2005年7月18日(月) 10:27 ] |
記事の件名: | 複数行コメントで |
(下記はサンプルです) コード: Sub MainWnd_Destroy() /*vbmp3_close() 1 KillTimer(hMainWnd,0) 2 /* vbmp3_free() 3 mp3player_DestroyObjects()*/ 4 PostQuitMessage(0) 5 End Sub(分かりやすいように最後に数字を入れています) とすると、「1,2,3,4」行はコメントアウトされているみたいですが、5行目がコメントアウトされておらず、「/*」の個数と「*/」の個数が一致していません。が、コンパイルは通ってしまいます。 それと、「*/」だけをどこか無意味な場所(空行)に置いても、コンパイルが通ります。 (また例です) コード: Sub MainWnd_Destroy() */ mp3player_DestroyObjects() PostQuitMessage(0) End Sub |
作成者: | tak [ 2005年7月18日(月) 12:36 ] |
記事の件名: | |
僕は、複数行コメント反対派の人間です。 ですから、問題になると指摘していたのですが・・・ 関連記事↓ http://www.discoversoft.net/forum/viewtopic.php?t=153 > それと、「*/」だけをどこか無意味な場所(空行)に置いても、コンパイルが通ります。 恐らく、上記記事で採り上げられた問題を回避するための策だと思われます。 |
作成者: | Sinryow [ 2005年7月18日(月) 13:20 ] |
記事の件名: | |
これは単にABのバグというべきでしょう。ですので 引用: 僕は、複数行コメント反対派の人間です。
という発言はとても不快に感じました。ですから、問題になると指摘していたのですが・・・ 複数行コメントが他のAB中の言語仕様と衝突するというのであれば話は別ですが。 > それと、「*/」だけをどこか無意味な場所(空行)に置いても、コンパイルが通ります。 これも,コンパイルエラーとして止める必要がありますね。 |
作成者: | tak [ 2005年7月18日(月) 15:01 ] |
記事の件名: | |
まずは > > 僕は、複数行コメント反対派の人間です。 > > ですから、問題になると指摘していたのですが・・・ > という発言はとても不快に感じました。 これを受けまして、発言内容があまりにも率直すぎたため、Sinryow様をはじめとする多くのABユーザの皆様に不愉快な思いを抱かせてしまいましたことにつきましては、お詫び申し上げます。 これはただ単に tak 一個人の意見であると解釈していただければ幸いです。 僕が本当に主張したかったのは 複数行コメントは思わぬ弊害の引き金となってきたという歴史的事実のため、複数行コメントには良い印象を持たない ということです。併せて、関連記事を紹介するための枕詞的な意味合いも含めようとしたため、このような表現になってしまいました。 話を変えまして、以下が本題です。 > これは単にABのバグというべきでしょう。 如何せん仕様が曖昧なので、この現象がバグであると断定することは出来ないのではないのでしょうか。 ここで問題となるのは、紛れもなく複数行コメントのネストです。 仕様で「複数行コメントのネストを認める」と定められた場合、 /* は、謂わば開き括弧、逆に */ は閉じ括弧に相当します。 これらが一対一に対応しなければ、それはエラーです。 一方「複数行コメントのネストは想定しない」と定められた場合、/* はコメント開始としての意味しか持ちません。もちろん */ もコメント終了の意味しか持たないことになります。 したがって、コンパイラは /* を見つけると、*/ を見つけるまでそれ以下に書かれているすべてを無視します。 このとき、ネストされた /* も無視されるわけで、そうなると /* と */ が一対一に対応しなくなります。 つまり、バグかどうかは仕様に依ります。ところが、現時点ではこれが明記されていません。 引用: /* ~ */ で囲まれた範囲の文字列は、すべて注釈と見なされます。複数行に渡るコメントアウトも可能です。
この説明文ではどちらともとれてしまいます。AB4.03 付属ヘルプより引用 突き詰めれば、それが問題です。 |
作成者: | 山本 [ 2005年7月19日(火) 11:30 ] |
記事の件名: | |
引用: /* ~ */ で囲まれた範囲の文字列は、すべて注釈と見なされます。複数行に渡るコメントアウトも可能です。
説明不足でしたね。下記の説明を、ヘルプに継ぎ足そうと思います。AB4.03 付属ヘルプより引用 引用: "/*" 及び "*/" は、ネスト構造ではありません。コンパイラは、バッファ中から "/*" を識別すると、"*/" が現れるまでサーチを行います。よって、"/*" と "*/" の間に "/*" や "'" などの注釈記号が含まれていたとしても、それらはコメントアウトの対象と判断されます。
よって、ActiveBasicの複数行コメントはネスト構造をもちませんので、ご了承ください。また、コード中の不適切な場所に "*/" があると、エラーとして処理されないバグについてですが、こちらは次回のバージョンアップで修正します。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |