
No.3ベストアンサー
- 回答日時:
コンパイラによって対応の方法が違うとは思うんですけど…
昔、私がシンボルテーブルでハマった時の対応は
・グローバル変数をとにかく減らす
すべてのグローバル変数を1つの構造体にまとめて、グローバル変数は構造体変数一つにしました。
コンパイラによって無意味かもしれませんが、私の使っていたコンパイラは構文解析段階で構造体メンバをオフセット参照していたのでオッケーでした。
構文解析段階でシンボルテーブルを使って、コードジェネレーションでオフセットに変換するタイプのコンパイラではだめかもしれません。
・プリプロセスを先にかけてしまう
プリプロセッサと構文解析を段階的にではなく、一気にやってしまうタイプのコンパイラではdefineシンボル用のシンボルテーブルとその他のシンボルテーブルが混在するため、メモリをたくさん使います。
プリプロセッサを先にかけてしまうことでdefineシンボル用のシンボルテーブルを分離します。
Jhonson-Cみたいに元々プロプロセッサと構文解析が分離しているコンパイラでは無意味です。
私がメモリ不足を経験したコンパイラは
MS-DOS用のLattice-C
MS-DOS用のMS-C
Flex-OS(コンカレントCP/Mの拡張OS)用のHi-Tech C
初期バージョンのMS-CはLattice-CのOEMだったので実質同じモノだったのかもしれません。
あるバージョンまでのQuick CはMS-Cのサブセットだったので効果あるかも?
この回答への補足
有難う御座いました。if()の中の条件が多すぎてのエラーでした。条件を小分けして関数にしたらOKでした。
文法としてif()の条件の数に制限が有ったのでしょうか?
どうしても完成させたいソフトだったので大変助かりました。本当に有難う御座いました。
ご教示有難う御座います。Quick Cに添付のサンプルソフトで外部変数をかなり使っている物が無事コンパイルできたのでやはり、自分のエラーのような気がします。
最後の説明の所は自分はアマチュアなんで意味が分かりませんでした。「プリプロセッサを一気に掛ける」の意を平易に教えて頂けないでしょうか?また、spwan系の関数を使い別モジュール間でのデータの送受信は出来ないでしょうか?なんとか頑張ってみます。有難う御座いました。
また、何か御座いましたらお教え下さい。
No.2
- 回答日時:
コンパイルエラーではなくてコンパイラ自身がエラーを起こしているのでは?
コンパイラのシンボルテーブルがあふれたときに見られるエラーだったような記憶があります。
グローバル変数やdefineマクロが多すぎる時にシンボルテーブルがあふれます。
早速のRES有難う御座います。自分はプログラムが下手なので今回グローバル変数を多用してます。例えば関数を分けて別個に作っておきexec()などで呼び出す方法は無いのでしょうか?最初から作り直すのは大変なので非合法な方法でも何か対策があれば御教示ください。
宜しくお願いします。
No.1
- 回答日時:
「ヒープ」と呼ばれるメモリの領域を使い切ってしまったかもしれません。
数十キロバイトのメモリを確保してないでしょうか?
あるいは使う文字列が多すぎたり。
マニュアルに「メモリモデル」か「スモールモデル」か
「ラージモデル」の言葉がないか探してみてください。
「メモリモデル」を「ラージモデル」にすれば動くのではないかと思います。
Turbo C++では、-mlというオプションをつければよかったのですが…。
早速のご回答有難う御座います。自分の場合下記の様な配列を使ってます。
typdef struct {float の変数8ヶ}LINE;
LINE work[50];LINE of[50];これで結構メモリ取られるのでしょうか?それにグローバル変数を多用してます。
ご指摘通りラージやヒュ-ジにもしましたが、エラーはでます。LINE far work[50];とすれば良いのでしょうか?
Turbo CでもQuick Cと同様のグラフィックが使えるのでしょうか?今時DOSを話題にするのも恥ずかしい気がしますが、
何か情報がありましたら、お教えください。失礼します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 英文についての質問です。 I love my home with a ferocity totall 1 2023/05/11 13:37
- Ruby パイソンエラーについて 1 2022/12/24 14:07
- C言語・C++・C# [至急]Project Euler:#13Large sum コード、入力、出力、解説 1 2022/09/24 02:30
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- ノートパソコン ノートパソコンのキーボード割り当てを変えたい 4 2023/04/16 20:39
- 英語 英文の添削お願いします。【長文です。】 マッチングアプリで相手を言い負かしている時のやつです。 色々 1 2023/07/01 02:12
- 洋楽 killer Queenの歌詞 3 2023/07/17 16:47
- 英語 Groups of riders meet late at night, after the tra 1 2022/05/20 13:41
- 英語 下記の英文の日本語訳をお願いします。 1 2023/03/02 10:01
- 英語 下記の英文を日本語に訳して、その意味を教えてください。 1 2023/03/09 14:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Out Of Near Heap Space?
-
templateクラスの宣言と定義を...
-
MPI プログラム
-
C言語でのコンパイラの作成方法
-
C言語について!
-
if文の論理積について
-
パーサとコンパイラの違いって?
-
C言語の2進数表記
-
コンパイラの設定
-
Linux用のC/C++のツール
-
switch文caseについて
-
コンパイラによって出力される...
-
Visual Studioについて。
-
confiureのオプションについて
-
未使用引数の注意文出力を回避...
-
C言語:OS移行時の注意点(Sola...
-
BCC で Cannot open file: wind...
-
C言語はC言語でできている?
-
GCCのコンパイラに関して、パス...
-
リリースモードとデバッグモー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ソフトの開発言語を調べる方法
-
unsigned long long 型のフォー...
-
C++でデスクトップGUIアプリ開...
-
COBOLの論理演算子について質問...
-
組み込みソフト。ROM領域にデータ
-
printfなど、標準関数のソース...
-
cc と gcc の違い
-
リリースモードとデバッグモー...
-
パーサとコンパイラの違いって?
-
AIXとCOBOLについて
-
<conio.h>?
-
COBOLのALPHABET...
-
VC++の/Zm オプションについて
-
C++Builder → Visual C++ 移植...
-
C言語の規格
-
COBOLの論理演算子について
-
変数の内容がコロコロ変わる、...
-
Macで使えるC言語のコンパイラ...
-
PICでのI2C通信でのマスタ、ス...
-
最初に使う変数のゼロクリアに...
おすすめ情報