• [解決済み] GCC -g vs -g3 GDBフラグ。その違いとは?

    質問 C言語のソースコードをgccやClangでコンパイルするとき、私は常に -g フラグを使用して、gdb 用のデバッグ情報を生成します。 gcc -g -o helloworld helloworld.c 私は、ある人々が -g3 を代わりに使う人もいるようです。の違いは何ですか? -g と -g3 のフラグはどうなっていますか?また -g と -ggdb ?

    2022-07-13 05:16:25
  • [解決済み] C言語のフォーマット文字列を作成する(印刷はしない)

    質問 文字列を受け取る関数があります。 void log_out(char *); のように、呼び出す際に、その場で整形された文字列を作成する必要がありますね。 int i = 1; log_out("some text %d", i); ANSI Cでこれを行うにはどうしたらよいでしょうか? のみです。 sprintf() はintを返すので、少なくとも3つのコマ

    2022-07-12 15:44:40
  • [解決済み] なぜ sizeof(my_arr)[0] はコンパイルして sizeof(my_arr[0]) と同じになるのでしょうか?

    質問 なぜこのコードはコンパイルできるのでしょうか? _Static uint32_t my_arr[2]; _Static_assert(sizeof(my_arr) == 8, ""); _Static_assert(sizeof(my_arr[0]) == 4, ""); _Static_assert(sizeof(my_arr)[0] == 4, ""); 最初の2つのアサー

    2022-07-11 10:58:59
  • [解決済み] Visual Studio 2010でコマンドライン引数を渡すには?

    質問 C プロジェクトで作業していますが、Visual Studio 2010 Express Edition でメイン関数にコマンドライン引数を渡す方法がわかりません。デバッグしたいのですが、これらのコマンドライン引数はどのように機能するのでしょうか? どのように解決するのですか? ソリューション エクスプローラーでプロジェクトを右クリックし、メニューから [プロパティ] を選択

    2022-07-11 03:21:49
  • [解決済み] 2次元配列へのポインタを作成する

    質問 静的な2次元配列へのポインタが必要です。これはどのように行われるのですか? static uint8_t l_matrix[10][20]; void test(){ uint8_t **matrix_ptr = l_matrix; //wrong idea } などと、いろいろなエラーが出ます。 警告: 互換性のないポインタ型からの代入 添え字の値は配列で

    2022-07-09 19:13:26
  • [解決済み] Linuxでデーモンを作成する

    質問 Linux で、ファイルシステムの変更を監視する停止できないデーモンを追加したいと思います。 何らかの変更が検出された場合、それが起動されたコンソールへのパスと改行が書き込まれる必要があります。 私はすでにファイルシステムを変更するコードをほとんど用意していますが、デーモンを作成する方法を見つけ出すことができません。 私のコードはここからです。 http://www.yoli

    2022-07-08 04:48:20
  • [解決済み] なぜC言語では配列だけを含む構造体を宣言するのですか?

    質問 以下のようなコードに出会いました。 struct ABC { unsigned long array[MAX]; } abc; このような宣言を使う意味があるのはどのような場合でしょうか? どのように解決するのですか? 配列を値で関数に渡したり、関数から値で返してもらったりすることができるようになります。 構造体は、これらのコンテキストでポインタに崩壊する配

    2022-07-07 08:09:57
  • [解決済み] C言語でgccが一部の文を最適化しないようにするには?

    質問 ページをダーティにする(ページテーブルエントリのダーティビットをオンにする)ために、私はこのようにページの最初のバイトをタッチします。 pageptr[0] = pageptr[0]; しかし、実際にはgccはこのステートメントをデッドストアの消去によって無視します。gccが最適化するのを防ぐために、私はこの文を以下のように書き直しました。 volatile int tmp;

    2022-07-06 23:50:56
  • [解決済み] 単純なループが最適化されるのは、なぜですか?

    質問 この単純なループを考えてみましょう。 float f(float x[]) { float p = 1.0; for (int i = 0; i < 959; i++) p += 1; return p; } gcc 7 (snapshot)またはclang (trunk)でコンパイルする際に -march=core-avx2 -Ofast に非

    2022-07-06 06:37:50
  • [解決済み] C89モードでコンパイルすると`C89`が、C99モードでコンパイルすると`C99`が出力されますが、どのように出力されますか?

    質問 このC言語プログラムをWebで見つけました。 #include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5//**/ -4.5))); return 0; } このプログラムの面白いところは、C89モードでコンパイルして実行すると、次のように表示されることです。 C89 と表

    2022-07-06 03:34:09
  • [解決済み] マクロを定義するときにdo while(0)を使うとどうなりますか?重複

    質問 この質問はすでにここに回答があります : 閉じる 9 年前 . 重複の可能性があります。 C/C++ マクロにおける Do-While および if-else ステートメント do { ... } while (0) - それは何のために

    2022-07-05 15:31:42
  • [解決済み] なぜコンパイラは予測可能な加算ループを乗算に最適化できないのでしょうか?

    質問 の見事な回答を読んでいて思いついた質問です。 謎めいた を質問してみました。 なぜソートされた配列の方がソートされていない配列よりも処理が速いのでしょうか? ? 関係する型のコンテキストです。 const unsigned arraySize = 32768; int data[arraySize]; long long sum = 0; 彼の回答では、Intel

    2022-07-02 16:14:41
  • [解決済み] 関数から構造体を返す際のGCCバグの可能性

    質問 GCCでO'NeillのPCG PRNGを実装しているときにバグを見つけたと思うのですが、これは何ですか?( Godbolt のコンパイラエクスプローラでの初期コード ) を掛けた後 oldstate で MULTIPLIER で、(結果はrdiに格納されます)、GCCはその結果を INCREMENT に追加せず、movabs'ing INCREMENT をrdxに

    2022-07-02 06:22:25
  • [解決済み] memmoveとmemcpyの違いは何ですか?

    質問 とはどのような違いがあるのでしょうか? memmove と memcpy ? 普段はどちらを、どのように使っていますか? どのように解決するのですか? とは memcpy では、送信先が送信元と重なることは一切ありません。また memmove では可能です。これはつまり memmove よりもごくわずかに遅くなる可能性があるということです。 memcpy と同じ仮

    2022-06-30 23:08:59
  • [解決済み] sizeof()を使用せずに配列のサイズを決定する方法は?

    質問 C言語の面接の質問で、「sizeof演算子を使わずにC言語で配列のサイズを求めるにはどうすればいいですか?それは動作しますが、私は理由を理解することができません。 #include <stdio.h> int main() { int a[] = {100, 200, 300, 400, 500}; int size = 0; size = *

    2022-06-23 16:22:38
  • [解決済み] 浮動小数点値の精度を維持するためのPrintf幅指定子

    質問 このような printf の必要な数に自動的にフォーマットして出力する浮動小数点数指定子に適用できる幅指定子はありますか? 有効数字 文字列をスキャンして戻すときに、元の浮動小数点値が取得されるように、必要な数の有効数字に出力を自動的にフォーマットするような浮動小数点指定子を適用できますか? 例えば、私が float という精度で 2 小数点以下の桁数。 flo

    2022-06-23 11:48:17
  • [解決済み] ファイルディスクリプタとファイルポインタの違いは何ですか?

    質問 ファイルディスクリプタとファイルポインタの違いを知りたいのですが。 また、どのようなシナリオで、一方をもう一方の代わりに使用するのでしょうか? どのように解決するのですか? ファイル記述子は、Linux やその他の Unix ライクなシステムにおいて、カーネル レベルで開いているファイル (またはソケットなど) を識別するために使用される低レベルの整数 "handle" で

    2022-06-21 07:03:27
  • [解決済み] C言語で複素数を扱うには?

    質問 C言語で複素数を扱うにはどうしたらよいでしょうか。私は complex.h ヘッダーファイルがありますが、それをどう使うかについてあまり情報をくれません。実部や虚部に効率的にアクセスするにはどうしたらよいでしょうか?モジュールと位相を得るためのネイティブ関数はありますか? どのように解決するのですか? このコードはあなたの助けになりますし、それはかなり自明です。 #inc

    2022-06-19 14:17:24
  • [解決済み] "int main (vooid)"? どのように動作するのですか?

    質問 最近、小さなCのテストプログラムを入力することになったのですが、その過程で、主関数の中で、誤って vooid の代わりに void . それでもまだ動いた。 それを最小の完全なバージョンに落とし込むと、こうなりました。 int main (vooid) { return 42; } これは 確かに をコンパイルします ( gcc -Wall -o

    2022-06-14 23:01:51
  • [解決済み] カウントダウンはカウントアップより早い?

    質問 コンピュータサイエンスの先生が、カウントアップするよりもカウントダウンしたほうが効率がいいと言っていました。 たとえば、FOR ループを使用する必要があり、ループ インデックスがどこかで使用されていない場合 (N * の行を画面に印刷するような場合)。 こんな感じのコードってことです。 for (i = N; i >= 0; i--) putchar('*');

    2022-06-14 19:05:31