【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

独学でCを学習中です。
コンパイルエラーについて教えてください。
Windows98SEでLSI C-86 Ver 3.30c 試食版を使用して
コンパイルしようとしていますが、下記のエラーが出てしまいます。

abc.c 103: can't open: http_config.h: No such file or directory
(以下同様に数行)

Includeの指定先にファイルがない、というエラーメッセージだと思うのですが
実際にはファイルはあり、同じようにincludeしているヘッダファイルで
読み込まれているものもあります。
推測ですがヘッダファイル名が8文字以上だとエラーが出ているようです。
これは何が原因でエラーになってしまうのでしょうか。
他に思いつく事は、
マニュアルどおりconfig.sysの最終行にはFILES=20を書き加えました。

お手数ですがエラーの原因と対策のご教示をお願いできますでしょうか。
よろしくお願いいたします。

A 回答 (3件)

GetShortPathNameはsystem32フォルダの中のkernel32.dllにあるAPIです。


APIをBorlandのフリーのコンパイラやLSI C-86で使えるかどうかは私にはわかりません。

GetShortPathNameは外部的にみれば
ファイル名を「abcdefghijk.c」→「abcdef~1」に変換する
関数みたいなものです。
もちろん「abcdefghijka.c」と「abcdefghijkb.c」
が存在した場合等は外部的な処理だけでは無理ですが。

win98SEは手元にないのでわからないのですが、ファイルの
プロパティにMS-DOSファイル名という項目
がなかったでしょうか。
    • good
    • 0
この回答へのお礼

再度のご教授ありがとうございます。
プロパティを確認したところ、MS-DOSファイル名という項目があり、
読込エラーが出ていたヘッダファイルは、******~1.hになっていました。

お答えいただいたGetShortPathNameの説明を拝見しましたところ、
私にはまだ難しい事柄のようですので、もう少し修練をしてから
再度ここを読み返し、チャレンジしたいと思います。
たいへん助かりました。ありがとうございます。

お礼日時:2002/09/04 18:07

sha-girlさんの回答への付け足しです。



Borland C++ CompilerでもWin32APIを使用することができます。(LSI C-86については知りません。) 基本的には、windows.hをインクルードしておけば、あとはANSIの標準ライブラリと同じように利用できます。例えば、GetShortPathNameであれば以下のような感じで使用します。

-------------------------------------------------
#include <stdio.h>
#include <windows.h>

int main(){

  char longname[256]="C:\\123456789.txt";
  char shortname[256];

  GetShortPathName(longname, shortname, sizeof(shortname));
  printf("shortname : %s\n", shortname);

  return 0;

}
-------------------------------------------------

あまり頻繁には使用しないと思いますが、ショートファイルネームが知りたい場合に使用してください。
    • good
    • 0
この回答へのお礼

ソースまでご提示いただきありがとうございます。
私の知識不足ですぐには応用出来そうにありませんが
追々参考にさせていただきます。
ありがとうございました。

お礼日時:2002/09/10 10:24

>8文字以上だとエラーが出ているようです


LSI C-86がDOSベースで動くコンパイラだからです。
DOSのファイル名の最大長は8文字+拡張子3文字です。
多分LSI C-86だと
ファイル名が8文字+拡張子3文字より多いと
ヘッダファイルでなくてもコンパイルできないはずです。

※どうしても8文字以上のファイル名をつけたいとするなら
MS-DOSでのファイル名(ショートファイル名)を
GetShortPathName APIかなにかで知る必要があります。

>マニュアルどおりconfig.sysの最終行にはFILES=20を書き加えました。
これはコンパイルエラーとは関係ありません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
Borlandのフリーのコンパイラで試したところ、
質問のエラーは出なくなりました。

便乗の質問で恐縮ですが、GetShortPathName APIでファイル名を知るのは
かなり難しい事なのでしょうか。
今後のために、教えていただけるとたいへんありがたいのですが、
お時間がありましたらお返事いただけましたら幸いです。

#蛇足ながら
>ファイル名が8文字+拡張子3文字より多いと
>ヘッダファイルでなくてもコンパイルできないはずです。
強引にabcdefghijk.cとかのファイルをabcdef~1とか指定して
無理矢理コンパイルさせていました。素人の強引さで汗顔の至りです。

お礼日時:2002/09/04 13:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報