ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 05:19

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - 複数行コメントで
作成者 メッセージ
  記事の件名:   引用付きで返信する
引用:
/* ~ */ で囲まれた範囲の文字列は、すべて注釈と見なされます。複数行に渡るコメントアウトも可能です。
AB4.03 付属ヘルプより引用
説明不足でしたね。下記の説明を、ヘルプに継ぎ足そうと思います。
引用:
"/*" 及び "*/" は、ネスト構造ではありません。コンパイラは、バッファ中から "/*" を識別すると、"*/" が現れるまでサーチを行います。よって、"/*" と "*/" の間に "/*" や "'" などの注釈記号が含まれていたとしても、それらはコメントアウトの対象と判断されます。
よって、ActiveBasicの複数行コメントはネスト構造をもちませんので、ご了承ください。


また、コード中の不適切な場所に "*/" があると、エラーとして処理されないバグについてですが、こちらは次回のバージョンアップで修正します。
投稿記事 Posted: 2005年7月19日(火) 11:30
  記事の件名:   引用付きで返信する
まずは

> > 僕は、複数行コメント反対派の人間です。
> > ですから、問題になると指摘していたのですが・・・

> という発言はとても不快に感じました。

これを受けまして、発言内容があまりにも率直すぎたため、Sinryow様をはじめとする多くのABユーザの皆様に不愉快な思いを抱かせてしまいましたことにつきましては、お詫び申し上げます。
これはただ単に tak 一個人の意見であると解釈していただければ幸いです。
僕が本当に主張したかったのは

  複数行コメントは思わぬ弊害の引き金となってきたという歴史的事実のため、複数行コメントには良い印象を持たない

ということです。併せて、関連記事を紹介するための枕詞的な意味合いも含めようとしたため、このような表現になってしまいました。



話を変えまして、以下が本題です。

> これは単にABのバグというべきでしょう。

如何せん仕様が曖昧なので、この現象がバグであると断定することは出来ないのではないのでしょうか。
ここで問題となるのは、紛れもなく複数行コメントのネストです。

仕様で「複数行コメントのネストを認める」と定められた場合、 /* は、謂わば開き括弧、逆に */ は閉じ括弧に相当します。
これらが一対一に対応しなければ、それはエラーです。

一方「複数行コメントのネストは想定しない」と定められた場合、/* はコメント開始としての意味しか持ちません。もちろん */ もコメント終了の意味しか持たないことになります。
したがって、コンパイラは /* を見つけると、*/ を見つけるまでそれ以下に書かれているすべてを無視します。
このとき、ネストされた /* も無視されるわけで、そうなると /* と */ が一対一に対応しなくなります。

つまり、バグかどうかは仕様に依ります。ところが、現時点ではこれが明記されていません。
引用:
/* ~ */ で囲まれた範囲の文字列は、すべて注釈と見なされます。複数行に渡るコメントアウトも可能です。
AB4.03 付属ヘルプより引用
この説明文ではどちらともとれてしまいます。
突き詰めれば、それが問題です。
投稿記事 Posted: 2005年7月18日(月) 15:01
  記事の件名:   引用付きで返信する
これは単にABのバグというべきでしょう。ですので
引用:
僕は、複数行コメント反対派の人間です。
ですから、問題になると指摘していたのですが・・・
という発言はとても不快に感じました。
複数行コメントが他のAB中の言語仕様と衝突するというのであれば話は別ですが。

> それと、「*/」だけをどこか無意味な場所(空行)に置いても、コンパイルが通ります。

これも,コンパイルエラーとして止める必要がありますね。
投稿記事 Posted: 2005年7月18日(月) 13:20
  記事の件名:   引用付きで返信する
僕は、複数行コメント反対派の人間です。
ですから、問題になると指摘していたのですが・・・

関連記事↓
http://www.discoversoft.net/forum/viewtopic.php?t=153


> それと、「*/」だけをどこか無意味な場所(空行)に置いても、コンパイルが通ります。

恐らく、上記記事で採り上げられた問題を回避するための策だと思われます。
投稿記事 Posted: 2005年7月18日(月) 12:36
  記事の件名:  複数行コメントで  引用付きで返信する
(下記はサンプルです)
コード:
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
投稿記事 Posted: 2005年7月18日(月) 10:27

全ての表示時間は UTC+09:00 です


ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean