ボーランドのC/C++コンパイラーを使ってますが、ソースをコンパイルしたら3つファイルが作成されました。
ソースの名前がPROG4で新しく出来たのが、PROG4.obj,
PROG4.tds,PROG4.BAKです。プログラムを実行するには
どうしたらいいでしょうか?又この3つのプログラムは何をさしますか?

A 回答 (10件)

ilink32.cfgではなくてbcc32.cfgだったとおもいますが、


なければ作成してください。Readmeにあったとおもいます。

または、下記パラメーターつけて実行してください。

bss32 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" PROG4.c

余談
>CをコンパイルするのにC++の拡張子でいいですか?:

可能ですが、あくまでC++としてコンパイルされたことになりますので構文をCの範囲で限定されたい場合は.cとしておいた方がいいと思います。

なかには、cでは許されているがC++では許されていない事もあります。逆もあります。(その場合警告が発生すると思います)
とくに何かのテキストをそのまま用いたりしたときに思わぬところでつまずいたりします。

またオプションを使用すればANSI Cに限定することもできます。

もっとも、言語の主流的にはCよりはC++,C#になってきているので、C++を勉強していくのを前提にするのであれば.CPPとしてC++を勉強されるといいと思います。
ただし、情報処理の試験等では許されなくなるので注意が必要です。CはあくまでもCですから。

この回答への補足

-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib" PROG4.c
-Iの前は何ですか? -Lの前は何ですか?
何の後ろにつけていいのかわかりません。
ssではなくてbccですよね?

補足日時:2004/11/29 19:06
    • good
    • 0

CをコンパイルするのにC++の拡張子でいいですか?:



勿論言いのです
C++をコンパイルするのにCの拡張子は駄目ですが
上位コンパチなのでOKです
CPPにすると
bcc32 prog.cpp
としなくても
bcc32 prog
でよくなります
プログラムでC++のSTLを使いたくなったときにはそのまま使えますが.cで駄目です
今後のことを考えて今からcppにしておきましょう
    • good
    • 0

「ilink32.cfg」のファイルを作成しました?



作成方法は、「BCC55」フォルダの「readme.txt」にあります。

この回答への補足

ilink32.cfg作りました。

補足日時:2004/11/28 20:42
    • good
    • 0

コンパイルは通っている(エラー表示がなくなった)のでしょうか?


関数名を間違えたときなど、*.objファイルはできますが、リンク時にエラーが出るはずです。この場合、*.exeはできません。

リンクのエラーが出てなければ、リンカーが起動できてないのでしょうか。。ilink32.exe は実行できますか?

この回答への補足

最初はエラーを出しましたが修正してしっかりコンパイルできました。ilink32.exe を実行すると 何やら表のようなものが15行表示されますが。

補足日時:2004/11/28 20:47
    • good
    • 0

補足を読みました。



>私が行った作業は、ソースのあるディレクトリに移動して、BCC32 PROG4.cと入力しました。特にオプションをカスタマイズしていません。リンクするにはどうしたらいいですか?

手元の環境(win2000)で試したのですが、「BCC32 PROG4.c」を実行するとPROG4.exeが生成されるはずです。エラーになるわけでもなくPROG4.exeも生成されないとなると、私には原因がわかりません。対処方法としてはANo.5の方の方法を参照してください。
    • good
    • 0

>私が行った作業は、ソースのあるディレクトリに移動して、


>BCC32 PROG4.cと入力しました。特にオプションをカスタマ
>イズしていません。リンクするにはどうしたらいいですか?

何もオプションを指定してなかったらコンパイルと同時にリンクまでして.exeができるはずなんだけどな。
ま、何らかの理由で.exeはないけど.objはあると言うのなら
bcc32.exe -ePROG4 PROG4.obj
でPROG4.exeができるはず。
    • good
    • 0

拡張子をcppにして


すなわちPROG4.cppに改名して
bcc32 prog4
と打ちリターンすればexeファイルができます

この回答への補足

CをコンパイルするのにC++の拡張子でいいですか?

補足日時:2004/11/28 20:51
    • good
    • 0

.tdsはデバッグ用の情報が入っています。


BC++付属のデバッガがTurbo Debuggerなのですが、tdsは恐らくTurbo Debugger Symbolsの略。
    • good
    • 0

 .objは、中間ファイルの1つで、1個の.cソースファイルに対して1個生成される。

Windowsでは最終的に実行ファイルは必ず.exeになる(.dllや.cplもあるけどまぁ例外という)。
 .bakというのは文字通りバックアップファイルだ。何のバックアップかは知らない。
 .tdsって何やろね。その辺はBorland独自の話なのだろうな。私はBorlandのコンパイラはちらっと試した事しかないのでこのあたりはあまりよく分からない。
    • good
    • 0

>プログラムを実行するにはどうしたらいいでしょうか?



実行するといっても実行ファイルが生成されていないようです。
PROG4.objがあるのでコンパイルはできたようですが、おそらくリンクはできていません。

>ソースをコンパイルしたら3つファイルが作成されました。

とありますが、どのような作業をしたのでしょうか
bccはオプションなしでコンパイルするとEXEファイル作成までしてくれた気がするのですが…。


>又この3つのプログラムは何をさしますか?

PROG4.obj コンパイルで生成されたオブジェクトファイル
PROG4.tds コンパイルで生成された中間ファイル
PROG4.BAK たぶんバックアップファイル

この回答への補足

私が行った作業は、ソースのあるディレクトリに移動して、BCC32 PROG4.cと入力しました。特にオプションをカスタマイズしていません。リンクするにはどうしたらいいですか?

補足日時:2004/11/27 22:50
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Q2 ~ 200 の素数 a, b, c (a < b < c) が、b - a = c - b を満たすa,b,cをビット操作を用いて求め、すべてを表示せよ

ちょっと考えてみました。でも、分かりません・・・まず、int型のintvalに200bitを割り当てて、intval=0としたいのですが、どうしたらいいのでしょう??
とりあえず考えてみたプログラムを誰か見て下さい!!お願いします。
#define BYTESIZE 200
#define MAX 200
main()
{
int i,j,intval=0;
for(i=2;i<=MAX/2;i++)
{
if(intval&(1<<(i-1)){}
else for(j=i*2;j<=MAX;j+=i)intval|=(1<<(j-1));
}/*素数を0、それ以外を1に
for(i=2;i<=MAX/2;i++)
for(j=2;j<=(MAX-i)/2;j++)
if((intval&(1<<(i-1))&&(intval&(i+j-1))&&(intval&(1<<(i+2*j-1)))) print("%3d %3d %3d (%3d)\n",i,i+j,i+2*j,j);
}/*三つ子の素数を調べ出力

ちょっと考えてみました。でも、分かりません・・・まず、int型のintvalに200bitを割り当てて、intval=0としたいのですが、どうしたらいいのでしょう??
とりあえず考えてみたプログラムを誰か見て下さい!!お願いします。
#define BYTESIZE 200
#define MAX 200
main()
{
int i,j,intval=0;
for(i=2;i<=MAX/2;i++)
{
if(intval&(1<<(i-1)){}
else for(j=i*2;j<=MAX;j+=i)intval|=(1<<(j-1));
}/*素数を0、それ以外を1に
for(i=2;i<=MAX/2;i++)
for(j=2;j<=(MAX-i)/2;j++)
if((intval&...続きを読む

Aベストアンサー

まずint型は200ビットもありません。通常は32ビットです。
200ビット使いたければint型を7個用意する必要があります。
つまり
int intval[7];
宣言して、
intval[0] 0~31ビット
intval[1] 32~63ビット
intval[2] 64~95ビット
.
.
.
intval[6] 182~200ビット
として使います。

第iビットの情報を取り出すときは
(intval[i>>5]>>(i&31))&1

第iビットを1にするときは
intval[i>>5]|=1<<(i&31);

とすれば良いでしょう。
関数やマクロを用意することをお勧めします。
例えば
int get(int intval[],int i)
{
return (intval[i>>5]>>(i&31))&1;/*0か1が返って来る。*/
}

void on(int intval[],int i)
{
intval[i>>5]|=1<<(i&31);
}

という感じです。

まずint型は200ビットもありません。通常は32ビットです。
200ビット使いたければint型を7個用意する必要があります。
つまり
int intval[7];
宣言して、
intval[0] 0~31ビット
intval[1] 32~63ビット
intval[2] 64~95ビット
.
.
.
intval[6] 182~200ビット
として使います。

第iビットの情報を取り出すときは
(intval[i>>5]>>(i&31))&1

...続きを読む

QC,C++,C#には共通点があるのでしょうか?

Cという言語に+や#が付いているだけ、と考えるとC言語がベースで、それに何か変更を加えてC++やC#に派生した、と思っているのですが、実際なにかつながりはあるのでしょうか?

C++を始める前にCをマスターしてから、というアドバイスをよく見かけますが、それもCがベースだからということなのでしょうか?

Aベストアンサー

この手の話では以下の読み物がオススメです
http://www.mwsoft.jp/column/program_top10.html


私の理解では、

C:
機械語を高級にしたもの

C++:
Cに、言語仕様的にオブジェクト指向を拡張したもの
Objective-C:
Cに、マクロ的にオブジェクト指向を追加したもの

Java:
C++の構文を下敷きに、JVM という仮想環境向けに簡単にしたもの
C#:
Javaの構文を下敷きに、.NET という仮想環境向けに複雑にしたもの


CとC++は関連があるので、難解なC++/ObjCを覚える最初の段階としてのCは、良い考えだと思います。
C/C++とJava/C#は無関係なので、Cを覚えても無駄でしょう。

Qボーランド、ビジュアルCでプログラムを作成、配布しますが、配布先の人た

ボーランド、ビジュアルCでプログラムを作成、配布しますが、配布先の人たちが素人なので、DLLのセッティング等をしないでも使える様にしたいのですが、どうしたら良いでしょうか。

共有RTL DLLを使うに にはチェックを入れていませんが、実行時にDLLが見つからないとのメッセージが出てしまいます。
ビジュアルC関連のDLLは見つからないとは出て来ないので、ビジュアルC関連のDLLは.exeに含まれている様ですが、画像ライブラリー(MIL)関連のDLLを要求して来ます。
宜しくお願い致します。

Aベストアンサー

C++ Builer のほうは、
「共有RTL DLLを使う」のチェックを外す……のほかに、

プロジェクトオプション → パッケージ の
「実行時パッケージを使って構築」のチェックを外す

も必要です。

QC言語ソースのコンパイルについて

C言語ソースファイルのコンパイルを実施しています。以前はコンパイルできていたのに、環境を変更したらコンパイルできなくなりました。原因や解決方法をお教え下さい。

旧環境
OS:WindowsNT
VC:5.0

新環境
OS:Windows2000
VC:6.0

現象
HSTMTの宣言が出来ない?

エラーメッセージ
・・・\TEST.c(683) : warning C4700: 値が割り当てられていないローカルな変数 'hstmt' に対して参照が行われました。

状況
変数 'hstmt'はHSTMTとして宣言しています。

よろしくお願いいたします。

Aベストアンサー

みなさん,ご指摘の通りなのですが,

「環境を変更したら...」
というのがどのような変更なのかにもよりますが,

ご質問のエラーメッセージから判断すると,
変数を初期化せずに参照したと言うことです.

変数は,初期化(値の代入)せずに参照してはいけないことになっています.
なぜならば,初期化しないと,その変数にどんな値が入っているのか分からないからです.
BASICですと,変数は使用するときに必ずゼロに初期化されますので,このような心配はありません.
しかし,Cなどのスピード重視の言語では,指定されていない余計なことはしないのがスタイルなのです.

「宣言」することと,「初期化」することは,別のものです.

int a;

a=0;

または,
int a=0;

と書けば,宣言して,初期化できます.

中には,変数の初期値など関係ないプログラムもアルでしょうから,このエラーチェックは,必須ではありません.
よって,ワーニングレベルで動作するプログラムもたくさんあります.
しかし,プログラムの基本的な考え方に立てば,「間違い」と言えます.C++は,初期化する専用関数をコンストラクタといって「当然」のように用意します.
(必須ではないのかもしれません.)

エラーチェックのレベルも,コンパイラオプションの設定でも変わります.
一度,ご確認を.

みなさん,ご指摘の通りなのですが,

「環境を変更したら...」
というのがどのような変更なのかにもよりますが,

ご質問のエラーメッセージから判断すると,
変数を初期化せずに参照したと言うことです.

変数は,初期化(値の代入)せずに参照してはいけないことになっています.
なぜならば,初期化しないと,その変数にどんな値が入っているのか分からないからです.
BASICですと,変数は使用するときに必ずゼロに初期化されますので,このような心配はありません.
しかし,Cなどのスピード重...続きを読む

QC,C++,C++/CLIの構造体とクラス

C++の構造体・クラスって、メンバのアクセス指定子のデフォルトが
privateかpublicかという違い「だけ」しか全くないのでしょうか?

クラスにおける
value class / ref class
という分類はC++/CLIのもので
これについては
value class の方は C言語の構造体に近いという事でいいでしょうか?

ref classの方は
ネイティブのC++のクラスを
マネージ用にしたようなもので

C++/CLIの構造体は
C++のそれと同じで
OKですか?

そしてそれらの構造体には、値型・参照型といった分類はないのでしょうか?

Aベストアンサー

> ということは、structも継承可、という事でしょうか?

structでも継承可能です。

> 継承のアクセス指定の方は
> クラスと構造体ではどうなるのでしょうか?

class A : Base {};



class A : private Base {};

と等価です。
一方、

struct A : Base {};



struct A : public Base {};

と等価です。

> そして「集成体」というのが初めて知ったのですが
> これはいわゆる、配列や・・・ある条件下でのクラス・・?
> なのでしょうか?

配列と以下の条件をすべて満たすクラスのことです。
・ユーザー定義のコンストラクタを持たない
・非公開または限定公開のメンバを持たない
・基底クラスを持たない
・仮想関数を持たない

ちなみにC言語の集成体は、配列と構造体の総称です(共用体は集成体ではありません)。


人気Q&Aランキング

おすすめ情報