問題タブ [tcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1310 参照

c - C99 のライブラリを使用して Windows で TCC を使用してファイルをコンパイルする

したがって、TCC の最新バージョンには C99 の機能の一部が実装されていると思われますが、C99 の Math ライブラリが含まれていないことがわかりました。

Windows で C99 のライブラリをさらに使用できるようにする方法はありますか? 私はグーグルで検索し、主にLinuxに関連するアドバイスをいくつか見つけましたが、このプロジェクトではWindowsで動作させる必要があります.

編集: これは、Windows プラットフォームで「任意の」コンパイラを取得することに関する質問ではありません。多くのコンパイラがあることに気づきました。これを行うには、特にTCCを取得する必要があります。

編集: プロジェクトはオンザフライで C コンパイルを行う必要があり、この機能に TCC を使用できるかどうかを確認したいと考えています。

0 投票する
0 に答える
88 参照

c - VC++ .LIB ファイルを .DEF ファイルに変換する

OpenGL アプリケーションのコンパイルに問題があり、間違った GLEW ライブラリを使用していることに気付きました。しかし、.def 形式の GLEW 静的ライブラリが見つかりません。定義ファイルを作成する方法を知っている人はいますか?

0 投票する
1 に答える
245 参照

c - TCC エラー: インデックスが大きすぎます

私はレイキャスティングで遊んでいて、3D 配列を使用してレベルを作成することにしましたが、TCC はこれを吐き出します:

配列の大きさに制限はありますか? コード:

0 投票する
1 に答える
530 参照

c++ - C++ tcc で Windows コンソールを非表示にする方法

コンソール ウィンドウを非表示にする方法、コンパイラは小さい C

0 投票する
1 に答える
1122 参照

c - Tiny C コンパイラ アーム

iOS および Android の実行時に C コードをコンパイルして実行したいと考えています。Tiny C Compiler は arm64 と armv7 で実行できますか? 可能であれば、XCode と Android プロジェクトを設定して Tiny C Compiler を実行するにはどうすればよいですか?

0 投票する
3 に答える
628 参照

c - tcc のパック構造体

tcc C コンパイラでパック構造体を実行しようとしています。コードは次のとおりで、__attribute __ タグがサポートされている必要があります。

gcc では動作しますが、tcc では動作しません。__attribute __((packed)) と他のいくつかのテストも試しましたが、どれも機能しません。

0 投票する
4 に答える
1997 参照

c - Cコンパイラがローカル変数をレジスタではなくスタックに置くように主張する方法

私は歴史的な関数型言語インタープリター (EMAS の KRC) を最新のシステム (Unix の C) に移植しようとしていますが、再配置する必要があるポインターを知るために、ヒープへのポインターのスタックをスキャンできることを期待するガベージ コレクターがあります。 GC 中にヒープ内のオブジェクトが移動されたとき。これが機能するには、ヒープを指すすべての関数引数とローカル変数がスタック内にある必要があります。

現在、「レジスタ」キーワードが「必要に応じてこの変数をレジスタに入れることができる」ことを意味し、それ以外の場合はスタック上にあった時代がありましたが、最近ではすべての (GCC、Clang、Tinyc/tcc) C コンパイラはこの動作を無効にする方法がないため、ローカル変数をレジスタに入れます。その結果、GC は進行中の関数に属するいくつかの値を失い、それらを保持できず、ヒープが破損します。

これらのコンパイラのいずれかに元の C セマンティクスを使用するように指示する方法はありますか?「登録」と言わない限り、すべてのローカル変数はスタック上にありますか?

私はいくつかの疣贅の「解決策」を持っています:

  • 各ヒープ指向のローカル変数のアドレスを取得するための余分なコードをあらゆる場所に追加し、それをダミー関数に渡します。
  • 関数のインライン化とその結果としてのインライン化された関数のパラメータの最適化を回避するために、すべての静的関数をグローバルにします。
  • すべてのマシン レジスタをスタックにプッシュするスタブで GC() 関数を囲み、実際の G​​C() 関数を呼び出してからそれらをポップします。

これらはすべて問題を改善しているように見えますが、非常にハックで信頼性が低くなります。

すべての関数パラメーターとローカル変数がスタック上にあることを確認するために、必要な結果を達成するためのより良い方法はありますか?