ab.com コミュニティ

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

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




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

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

トピックのレビュー - コンパイラが出すエラーの文字列で・・・
作成者 メッセージ
  記事の件名:   引用付きで返信する
"コンパイラの内部事情"とは、"制作上の事情"と言うことなんですね。
失礼しました。
投稿記事 Posted: 2005年7月09日(土) 15:44
  記事の件名:   引用付きで返信する
これは、製作上の都合だと思います。
以下のコードで実現できます。
コード:
#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);
	
}
投稿記事 Posted: 2005年7月09日(土) 14:05
  記事の件名:   引用付きで返信する
でも、全角の”は、使おうとすれば使えると思いますが?

コンパイラは全角を文字として認める特性があるので(yacc/lexを少し経験したときに思いました)
投稿記事 Posted: 2005年7月09日(土) 00:49
  記事の件名:   引用付きで返信する
> このように多重的に sprintf()関数を利用するのならば、ダブルクォートの移動は不可能ですよね。

そうなんですか。勉強になります。回答ありがとうございます。
投稿記事 Posted: 2005年7月09日(土) 00:20
  記事の件名:   引用付きで返信する
コンパイラの内部事情なので、仕方ないです。
例えば、コンパイラが内部で次のようなフォーマットを保持していたとしましょう。
  1. %s関数の第%dパラメータ
  2. "%s"はポインタ変数型です。文字列演算を指定することはできません
C言語の sprintf()関数のようなもので 1. の %s には "MusicFileOpen" という文字列が、%d には "1" という文字列が格納されたとします。
これをバッファに格納しておき、2. の %s にそのままこのバッファを格納すると、

 "MusicFileOpen関数の第1パラメータ"はポインタ変数型です。文字列演算を指定することはできません

という文字列が生成されるわけです。
このように多重的に sprintf()関数を利用するのならば、ダブルクォートの移動は不可能ですよね。
投稿記事 Posted: 2005年7月08日(金) 21:36
  記事の件名:  コンパイラが出すエラーの文字列で・・・  引用付きで返信する
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パラメータはポインタ(以下略)
が良いと思うのですが、どうでしょうか?
自分的には関数の部分だけを「"」で囲うほうが良いんじゃないかと思いまして・・・・・
まぁ、ほとんどエラーの内容が分かるので、気にしてないんですけど、一応気になりましたので(微妙に矛盾…)、投稿しておきます。
皆さんはどうなんでしょうかね?
投稿記事 Posted: 2005年7月08日(金) 20:15

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


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