• ベストアンサー

Macでの\a(ビープ音)

以下の様に記述しても、ビープ音がでません。 開発環境はMac OS10.5.6( Intel CPU ) です。 使用ソフトはXcode3.1.2です。 int main ( int argc, const char * argv[] ) {   printf( "警報!\a\n" );   return 0; } Windowsでは正常動作する事から、 Mac環境である事が原因だと予測しますが、 もしそうだとしましたら、なぜMacでは鳴らないのでしょうか? Macでは専用の音源がないから?何か設定をし忘れている? そもそも、このビープ音はどこに保存されている? …等、疑問に思い質問いたしました。 初歩的な質問すみません。よろしくお願いします。

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

  • ベストアンサー
回答No.2

C言語では'\a'は「ベル文字(アラート)」と決められています。 しかし、決まっているのは「ベル文字(アラート)である」と言う事『だけ』です。 コンソールにベル文字を出力した場合の実際の動作は機種依存であり、何が起こるかは決められていません。 >Windowsでは正常動作する事から、 そうとは限りません。 たとえWindows機であっても「ベルの鳴動をサポートしてないコンソール上」では、ベル音が鳴りません(特殊なコンソール制御用デバイスドライバを組み込んでいる場合や、コンソール端末エミュレータ上で動作させた場合など) >Mac環境である事が原因だと予測しますが、 Macも、ベル文字を出力した際の動作は、Windows同様にプログラムを起動しているコンソールエミュレータ(またはターミナルエミュレータ)に依存します。 MacもWindowsも、コンソール(ターミナル)が「ベル文字を受け取った時に音を出す機能があるなら音が鳴るし、音を出す機能がないなら音が出ない」です。 今回は、偶然に「Windowsのコンソールは音が出るようになっていて、Macのコンソールは音がでないようになっていただけ」の話です。 ぶっちゃけ「'\a'の動作は機種依存なので、使ってはいけない」です。

AooYu
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 とても丁寧でためになるご回答ありがとうございます。 OS依存という訳ではなく、現在の実行環境がベルの鳴動をサポートしてなかったのですね。 ずっと間違って認識していたので、理解できて良かったです! ありがとうございました。

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

Macでも鳴りますよ。 コンパイルしたプログラムをどうやって実行していますか? ターミナル.appの中で実行しているのであれば、メニューのターミナル→ウィンドウ設定で「ターミナルインスペクタ」ウィンドウを出し、「エミュレーション」の欄を見ると「オーディオベル」「ビジュアルベル」という項目があります。 ここで「オーディオベル」をチェックしてあれば鳴ります。 「ビジュアルベル」をチェックしてある場合には音を出す代わりにウィンドウが一瞬点滅します。 (Mac OS X 10.4.11で確認)

AooYu
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 ビープ音の鳴らし方を解りやすく教えていただきありがとうございます。 プログラムはXcodeの"ビルドして実行"から実行していました。 教えていただいた方法でターミナルを使用し実行したところ、ベルが鳴るのを確認しました。 オーディオベル以外に、ビジュアルベルという存在がある事も初めて知りました。 なるほど、とても勉強になりました。 ありがとうございました!

関連するQ&A