ab.com コミュニティ https://www.activebasic.com/forum/ |
|
コンパイラが出すエラーの文字列で・・・ https://www.activebasic.com/forum/viewtopic.php?t=165 |
ページ 1 / 1 |
作成者: | Mario2 [ 2005年7月08日(金) 20:15 ] |
記事の件名: | コンパイラが出すエラーの文字列で・・・ |
ActiveBasic4.02.00で(多分最新版でも同じことが発生するかもしれませんが)、たとえば コード: Sub MusicFileOpen(FileName As BytePtr) (処理) End SubというSubがあり、それを呼び出すとき、 コード: MusicFileOpen(Mid$(buffer,hTop+2))(Mid$を何かの文字列に代入?すればエラーはなくなると思いますが・・・) を使うと、 MainWnd.sbp(48) - "MusicFileOpen関数の第1パラメータ"はポインタ(以下略) と出るのですが、自分的には MainWnd.sbp(48) - "MusicFileOpen"関数の第1パラメータはポインタ(以下略) が良いと思うのですが、どうでしょうか? 自分的には関数の部分だけを「"」で囲うほうが良いんじゃないかと思いまして・・・・・ まぁ、ほとんどエラーの内容が分かるので、気にしてないんですけど、一応気になりましたので(微妙に矛盾…)、投稿しておきます。 皆さんはどうなんでしょうかね? |
作成者: | tak [ 2005年7月08日(金) 21:36 ] |
記事の件名: | |
コンパイラの内部事情なので、仕方ないです。 例えば、コンパイラが内部で次のようなフォーマットを保持していたとしましょう。
これをバッファに格納しておき、2. の %s にそのままこのバッファを格納すると、 "MusicFileOpen関数の第1パラメータ"はポインタ変数型です。文字列演算を指定することはできません という文字列が生成されるわけです。 このように多重的に sprintf()関数を利用するのならば、ダブルクォートの移動は不可能ですよね。 |
作成者: | Mario2 [ 2005年7月09日(土) 00:20 ] |
記事の件名: | |
> このように多重的に sprintf()関数を利用するのならば、ダブルクォートの移動は不可能ですよね。 そうなんですか。勉強になります。回答ありがとうございます。 |
作成者: | mako20 [ 2005年7月09日(土) 00:49 ] |
記事の件名: | |
でも、全角の”は、使おうとすれば使えると思いますが? コンパイラは全角を文字として認める特性があるので(yacc/lexを少し経験したときに思いました) |
作成者: | Abs [ 2005年7月09日(土) 14:05 ] |
記事の件名: | |
これは、製作上の都合だと思います。 以下のコードで実現できます。 コード: #include <stdio.h> void main() { char* pmsg = "\"%s\" 関数の第%dパラメータ"; char* pmsg2 = "%sはポインタ変数型です。文字列演算を指定することはできません"; char sztmp[256]; char szmsg[256]; sprintf(sztmp, pmsg, "MusicFileOpen", 1); sprintf(szmsg, pmsg2, sztmp); printf(szmsg); } |
作成者: | Abs [ 2005年7月09日(土) 15:44 ] |
記事の件名: | |
"コンパイラの内部事情"とは、"制作上の事情"と言うことなんですね。 失礼しました。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |