ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2018年11月21日(水) 00:53

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 
作成者 メッセージ
 記事の件名: 複数行コメントで
投稿記事Posted: 2005年7月18日(月) 10:27 
オフライン

登録日時: 2005年5月31日(火) 13:31
記事: 205
住所: 大阪市
(下記はサンプルです)
コード:
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日(月) 12:36 
オフライン

登録日時: 2005年5月31日(火) 07:49
記事: 162
僕は、複数行コメント反対派の人間です。
ですから、問題になると指摘していたのですが・・・

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


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

恐らく、上記記事で採り上げられた問題を回避するための策だと思われます。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年7月18日(月) 13:20 
オフライン

登録日時: 2005年5月31日(火) 09:34
記事: 141
住所: 北海道
これは単にABのバグというべきでしょう。ですので
引用:
僕は、複数行コメント反対派の人間です。
ですから、問題になると指摘していたのですが・・・
という発言はとても不快に感じました。
複数行コメントが他のAB中の言語仕様と衝突するというのであれば話は別ですが。

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

これも,コンパイルエラーとして止める必要がありますね。

_________________
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年7月18日(月) 15:01 
オフライン

登録日時: 2005年5月31日(火) 07:49
記事: 162
まずは

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

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

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

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

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



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

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

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

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

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

つまり、バグかどうかは仕様に依ります。ところが、現時点ではこれが明記されていません。
引用:
/* ~ */ で囲まれた範囲の文字列は、すべて注釈と見なされます。複数行に渡るコメントアウトも可能です。
AB4.03 付属ヘルプより引用
この説明文ではどちらともとれてしまいます。
突き詰めれば、それが問題です。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年7月19日(火) 11:30 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
引用:
/* ~ */ で囲まれた範囲の文字列は、すべて注釈と見なされます。複数行に渡るコメントアウトも可能です。
AB4.03 付属ヘルプより引用
説明不足でしたね。下記の説明を、ヘルプに継ぎ足そうと思います。
引用:
"/*" 及び "*/" は、ネスト構造ではありません。コンパイラは、バッファ中から "/*" を識別すると、"*/" が現れるまでサーチを行います。よって、"/*" と "*/" の間に "/*" や "'" などの注釈記号が含まれていたとしても、それらはコメントアウトの対象と判断されます。
よって、ActiveBasicの複数行コメントはネスト構造をもちませんので、ご了承ください。


また、コード中の不適切な場所に "*/" があると、エラーとして処理されないバグについてですが、こちらは次回のバージョンアップで修正します。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 5 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke