問題タブ [c]
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.
c - ARM7TDMI で引数のアドレスを取得するときに GCC が壊れていますか?
私の C コード スニペットは、引数のアドレスを取得し、揮発性メモリの場所 (前処理されたコード) に格納します。
このコードのコンパイルには GCC の SVN バージョンを使用しました。関数の最後に、値がスタックに格納され、その値を指すアドレスが に格納されるfoo
ことを期待します。flag を使用して最適化なしでコンパイルすると、予想される ARM7TMDI アセンブリ出力が得られます (便宜上コメントされています)。1
0x40000d4
-O0
最初に引数をスタックに格納し、そこから に格納することは明らか0x40000d4
です。を使用して最適化してコンパイルすると-O1
、予期しない結果が得られます。
今回は、スタックの何かがまだ に格納されていても、引数がスタックに格納されることはありません0x40000d4
。
これは予想される/未定義の動作ですか? 何か間違ったことをしたのでしょうか、それとも実際に Compiler Bug™ を見つけたのでしょうか?
c - while ((x = next()) != END) と同等の最も Pythonic な方法
この C コンストラクトに最適な Python イディオムは何ですか?
next() を再コーディングする機能がありません。
更新:そしてからの答えは次のようです:
c++ - Visual Studio の C
C を学ぼうとしています。C# 開発者として、私の IDE は Visual Studio です。これは C/C++ 開発に適した環境だと聞いています。しかし、どんな小さなことをしようとしても、直感は失敗するようです。誰かが次のいずれかの方法について良いリソースを提供できますか:
- Visual Studio で C の詳細を学ぶ
- より良い C IDE + コンパイラを推奨する
編集:も参照してください: https://stackoverflow.com/questions/951516/a-good-c-ide
c - バイト配列を 12 ビットでシフトする方法
バイト配列の内容を 12 ビット左にシフトしたい。
たとえば、次の type の配列から始めuint8_t shift[10]
ます。
左に12ビットシフトすると、次のようになります。
c - C で現在のプロセスの CPU 使用率を取得する
Windowsでは次のことができます:
*nixで同じことを行うにはどうすればよいですか?
c - Cで現在のプロセスの優先度を変更する
Windowsでは次のことができます:
*nixで同じことを行うにはどうすればよいですか?
c - Linux で使用する一時ファイルのファイル名を取得するにはどうすればよいですか?
一時ファイルを使用する必要があるプログラムを C で作成しているとしましょう。/tmp に一時的な一時ファイルを作成することは、おそらく良い考えではありません。一時ファイル名を提供して、そこから書き込みおよび読み取りを開始できる関数または OS 呼び出しはありますか?
c - C 用の wxWidgets フレームワークはありますか?
私の理解では、wxWidgetsは多くのプログラミング言語 (C++、Python、Perl、および C#/.NET) 用ですが、C は含まれていません。C プログラミング言語用の同様のフレームワークはありますか?に使用されますか?
c - C での優れたオープン ソース B ツリー実装とは?
C で記述された B ツリー ライブラリの無駄のない適切に構築されたオープン ソース実装を探しています。商用アプリケーションで使用できるようにするには、非 GPL ライセンスである必要があります。理想的には、このライブラリはディスク ファイルとして格納/操作される B ツリー インデックスをサポートし、構成可能な (つまり、最小限の) RAM フットプリントを使用して大きなツリーを構築できるようにします。
注: 少し混乱しているように見えたので、バイナリ ツリーと B ツリーは同じものではありません。
c - どの4.xバージョンのgccを使用する必要がありますか?
私が働いている製品グループは、現在、大規模な低レベルのcコードベースにgcc 3.4.6(古いものであることがわかっています)を使用しており、新しいバージョンにアップグレードしたいと考えています。テストしたすべてのハードウェアプラットフォームで、さまざまなバージョンのgcc4.xをテストするとパフォーマンスが向上することがわかりました。しかし、私たちはc-compilerのバグを非常に恐れており(歴史的には正当な理由があります)、どのバージョンにアップグレードすべきかについて誰かが洞察を持っているかどうか疑問に思います。
大規模なコードベースに4.3.2を使用していて、正常に機能していると感じている人はいますか?