C用語は

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Qoo

C用語は

#1 投稿記事 by Qoo »

ActiveBasicでC用語のプログラムって作れるんでしょうか。
もし良ければ教えてください。
Sinryow
記事: 141
登録日時: 2005年5月31日(火) 09:34
お住まい: 北海道
連絡する:

Re: C用語は

#2 投稿記事 by Sinryow »

> ActiveBasicでC用語のプログラムって作れるんでしょうか。

C「言語」ですよね・・・。

Qooさんが言いたいのは「C言語のプログラムをActiveBasicに移植したい」ということでしょうか?それでしたら可能かもしれません。
具体的にどういうことがしたいのでしょう?
' ============================================================
' Sinryow Game Home Page - http://www.sinryow.net/
' Sinryow ActiveBasic Center - http://ab.sinryow.net/
' ============================================================
mako20
記事: 26
登録日時: 2005年5月31日(火) 01:10
お住まい: 岡山県
連絡する:

Re: C用語は

#3 投稿記事 by mako20 »

> > ActiveBasicでC用語のプログラムって作れるんでしょうか。
>
> C「言語」ですよね・・・。
>
> Qooさんが言いたいのは「C言語のプログラムをActiveBasicに移植したい」ということでしょうか?それでしたら可能かもしれません。

Qooさん、僕はC言語のプログラムを移植したプログラムをこちらで掲載しています。<(AB仕様のものは、ある程度できたらC言語に移植する予定です)
┗(WAV再生用)

C言語仕様はここです<(こちらは、ほったらかしですが^^;)
┗(Ogg再生用)
まけイヌ
記事: 27
登録日時: 2005年7月03日(日) 10:37
お住まい: 愛知県岡崎市
連絡する:

Re: C用語は

#4 投稿記事 by まけイヌ »

レスの内容が私が受け取った意味と違っていたので、
念のため書いておきます。

> ActiveBasicでC用語のプログラムって作れるんでしょうか。
恐らく、C言語の関数をActiveBasicで再現できるか?という意味かと。
それを"C用語"と言われているのではないでしょうか?

この前提で答えていきます。


●#ifdef, #ifndef, #endif, #else, #define
 この辺りの動作はプリプロセッサの処理になりますので、
厳密な再現は出来ないと思われます。
ただし、#defineに関してはconst命令で近いところをサポートできます。

●main関数 (最初に実行される関数)
 Createイベントの末尾でCreateThread関数(API)を使って新たなスレッドを立て、
その関数名を"main"にしてしまえば近い事はできます。
が、どうしてもその前にグローバル領域とCreateイベント内の処理が行われてしまうので、
厳密に再現する事はできません。

●ラベル
 ラベルの前に*を付ける事で可能です。
GOTO文も健在ですので、問題なく再現できます。

●printf関数
 コレ自体を再現するには関数を一つ作らねばなりません。
wsprintf関数(API)を参考にすれば可能だと思われます。

●switch ~ case
 Select Case文が近い事をやっていますが、完全な再現は無理です。
ちなみにcaseの後にコロンを付けてもコンパイルは通ります。
※ActiveBasic的には誤りみたいですが、私は敢えて付けています
※でないとCを書く時に間違えそうですし..

●for
 C特有の3段指定は無理です。

●関数ポインタ
 AddressOf文で対応できます。

●ポインタ
 DWordPtrなど、型に対してPtrを付けて対応可能です。
巷では*が有効とか聞いたのですが、ホントかどうかは未検証です。

●void型
 VoidPtr型で対応できます。
引数の場合はAnyでも対応できるみたいです。

●ポインタのポインタ
 BASICなんで不要な気もしますが可能です。
BytePtr型などのポインタ型変数を宣言しておいて、
関数の引数にByRefを指定すれば同等の効果が得られます。(たぶん)

●おまけ:printf("%a");
 Beep関数(API)で対応可能です。
ただし、この関数はOSバージョンによって使い分けされるので、
ヘルプかMSDNをよく読んでお使いください。
# まけイヌ (losedog2)
# Home : http://www50.tok2.com/home/losedog2/
# Mail : losedog2@yahoo.co.jp
返信する