C言語関係掲示板

過去ログ

No.104.WindowsのCにfar型がないためのエラー


No.570

構造体
投稿者---moon(2001/11/20 14:28:21)


最近、C言語(Windows版のBorland C++)をやり始めました。今、データ制御用のプログラムを作っています。(元のプログラムはMS-Cで、このプログラムをBorland C++で書き直しています。)で、以下のプログラム

dat_p = (float far *)MK_FP(seg, 0);

をコンパイルすると ") expected" というエラーがでてきます。このエラーの意味はわかるのですが、どこを変えてもエラーがでます。
そこで、このエラーのヘルプを見てみると、". または .* の左側に構造体が必要。ピリオド(.)演算子(または C++ の .* 演算子)の左側が構造体型になっていません。このエラーは,ユーザーが空のカッコを使ってクラスのインスタンスを作り,その 'object' のメンバーにアクセスしようとしたときに起きます。" というヘルプ表示がでてきます。
何分、まだC言語は初心者なもので、うまく説明できていないと思いますが、アドバイスを頂ければ幸いです。


No.571

Re:構造体
投稿者---shu(2001/11/20 14:44:15)


>dat_p = (float far *)MK_FP(seg, 0);
>
>何分、まだC言語は初心者なもので、うまく説明できていないと思いますが、アドバイスを頂ければ幸いです。

いかんせんソースが一行しか書かれていないので、なんともいえません。
dat_pの型が何か、MK_FP(seg, 0);が関数なのかマクロなのかも解りませんし、
情報が少なすぎてお手上げです。


No.573

Re:構造体
投稿者---moon(2001/11/20 16:11:41)


>>dat_p = (float far *)MK_FP(seg, 0);
>>
>>何分、まだC言語は初心者なもので、うまく説明できていないと思いますが、アドバイスを頂ければ幸いです。
>
>いかんせんソースが一行しか書かれていないので、なんともいえません。
>dat_pの型が何か、MK_FP(seg, 0);が関数なのかマクロなのかも解りませんし、
>情報が少なすぎてお手上げです。


すいません。質問してるわりに情報がすくなすぎました。
とりあえず、自分が分かっている範囲で書きます。
dat_pに関しては、

float far *dat_p;

という型です。

MK_FPは、

#undef MK_FP
#define MK_FP(s,o) ((void far *)(((unsigned long)(s)<<16)|(unsigned)(o)))

という風になってます。これだけじゃ、まだ情報がすくなすぎますかね・・・?

No.576

Re:構造体
投稿者---ともじ(2001/11/20 17:37:48)


moonさん、こんにちは。

>最近、C言語(Windows版のBorland C++)をやり始めました。今、データ制御用のプログラムを作っています。(元のプログラムはMS-Cで、このプログラムをBorland C++で書き直しています。)で、以下のプログラム
>
>dat_p = (float far *)MK_FP(seg, 0);
>
>をコンパイルすると ") expected" というエラーがでてきます。

これは、WindowsのCにfar型がないということがエラーの原因でしょう。
MS-CはMS-DOS上のCですので、セグメント2バイト+オフセット2バイトで
管理しているので、farポインタが存在します。
ですが、WindowsのCはアドレスを4バイトで管理しているのでfar型が
ありません。それで、コンパイルエラーが出るのだと思います。

ここ、参考になると思いますので、見てみてください。
C言語プログラム移植ノウハウ


No.577

Re:構造体
投稿者---moon(2001/11/20 17:51:45)


>これは、WindowsのCにfar型がないということがエラーの原因でしょう。
>MS-CはMS-DOS上のCですので、セグメント2バイト+オフセット2バイトで
>管理しているので、farポインタが存在します。
>ですが、WindowsのCはアドレスを4バイトで管理しているのでfar型が
>ありません。それで、コンパイルエラーが出るのだと思います。
>
>ここ、参考になると思いますので、見てみてください。
>C言語プログラム移植ノウハウ

ともじさん、アドバイスありがとうございます。
そのHP参考にします。



戻る


「初心者のためのポイント学習C言語」 Last modified:2002.01.11
Copyright(c) 2000-2002 TOMOJI All Rights Reserved