タグ付けされた質問 「c」

Cは、システムプログラミング(OSおよび組み込み)、ライブラリ、ゲーム、クロスプラットフォームに使用される汎用プログラミング言語です。このタグは、ISO 9899標準で定義されているC言語に関する一般的な質問で使用する必要があります(特に指定のない限り、最新バージョン9899:2018。バージョン固有のリクエストには、c89、c99、c11などのタグも付けます)。CはC ++とは異なり、合理的な理由がない限り、C ++タグと組み合わせるべきではありません。


12
const char * constとconst char *?
C ++に慣れるためにいくつかのサンプルプログラムを実行していて、次の質問に遭遇しました。まず、ここにサンプルコードがあります: void print_string(const char * the_string) { cout << the_string << endl; } int main () { print_string("What's up?"); } 上記のコードでは、print_stringのパラメーターは代わりにconst char * const the_stringでした。これにはどちらが正しいでしょうか? 違いは、1つは定数文字へのポインターであり、もう1つは定数文字への定数ポインターであることです。しかし、なぜこれらの両方が機能するのでしょうか。それはいつ関連しますか?
110 c++  c 

9
Linuxでデーモンを作成する
Linuxでは、停止できない、ファイルシステムの変更を監視するデーモンを追加したいと思います。変更が検出された場合は、開始されたコンソールへのパスと改行を書き込みます。 ファイルシステムを変更するコードはほぼ準備ができていますが、デーモンの作成方法がわかりません。 私のコードはここからです:http : //www.yolinux.com/TUTORIALS/ForkExecProcesses.html フォークの後に何をしますか? int main (int argc, char **argv) { pid_t pID = fork(); if (pID == 0) { // child // Code only executed by child process sIdentifier = "Child Process: "; } else if (pID < 0) { cerr << "Failed to fork" << endl; …
110 c  linux  daemon 

30
2つのポインタのみを使用して、単一リンクリストを逆にする方法は?
2つのポインタのみを使用して、単一リンクリストを逆にするロジックが存在するのだろうか。 以下は、すなわち3つのポインタを使用して、単一リンクリストを反転させるために使用されp、q、r: struct node { int data; struct node *link; }; void reverse() { struct node *p = first, *q = NULL, *r; while (p != NULL) { r = q; q = p; p = p->link; q->link = r; } first = q; } リンクされたリストを逆にする他の代替はありますか?時間の複雑さの観点から、単一にリンクされたリストを逆にするための最良のロジックは何でしょうか?


4
結果が何であれ、ゼロによる除算をサポートする最も速い整数除算は何ですか?
概要: 計算する最速の方法を探しています (int) x / (int) y の例外を得ることなくy==0。代わりに、任意の結果が必要です。 バックグラウンド: 画像処理アルゴリズムをコーディングするとき、私はしばしば(累積された)アルファ値で除算する必要があります。最も単純なバリアントは、整数演算を行うプレーンCコードです。私の問題は、通常、を使用した結果ピクセルに対してゼロ除算エラーが発生することalpha==0です。ただし、これは正確に結果がまったく問題にならないピクセルalpha==0です。のピクセルのカラー値は気にしません。 詳細: 私は次のようなものを探しています: result = (y==0)? 0 : x/y; または result = x / MAX( y, 1 ); xとyは正の整数です。コードはネストされたループで膨大な回数実行されるため、条件付き分岐を取り除く方法を探しています。 yがバイト範囲を超えない場合、私は解決策に満足しています unsigned char kill_zero_table[256] = { 1, 1, 2, 3, 4, 5, 6, 7, [...] 255 }; [...] result = x / …

9
Cのsizeof単一の構造体メンバー
別の構造体に依存する構造体を宣言しようとしています。sizeof安全・徹底的に使いたい。 typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; 次にchild_t、と同じサイズの構造体を宣言したいと思いparent_t.textます。 これどうやってするの?(以下の疑似コード。) typedef struct _child { char flag ; char text[sizeof(parent_t.text)] ; int used ; } child_t ; parent_tおよびstruct _parentでいくつかの異なる方法を試しましたが、私のコンパイラは受け入れません。 トリックとして、これはうまくいくようです: parent_t* dummy ; typedef struct _child { char flag ; char text[sizeof(dummy->text)] …
109 c  struct  sizeof 



14
関数からC文字列を返す
関数からC文字列を返そうとしていますが、機能しません。これが私のコードです。 char myFunction() { return "My String"; } でmain、私はこのようにそれを呼び出しています: int main() { printf("%s", myFunction()); } 他にもいくつかの方法を試しましたmyFunctionが、機能しません。例えば: char myFunction() { char array[] = "my string"; return array; } 注:ポインターを使用することはできません! この問題の背景: 何月かを知る機能があります。たとえば、1の場合、1月を返します。 そのため、印刷する場合は、次のようにしますprintf("Month: %s",calculateMonth(month));。ここで問題は、calculateMonth関数からその文字列を返す方法です。
109 c 

4
uint_fast32_tとは何ですか?通常のintおよびuint32_tの代わりに使用する必要があるのはなぜですか?
したがって、typedef:edされたプリミティブデータ型の理由は、低レベルの表現を抽象化し、理解しやすくするためです(型ではuint64_tなく、long long8バイトです)。 ただし、uint_fast32_tと同じtypedefものがありuint32_tます。「高速」バージョンを使用すると、プログラムが高速になりますか?
109 c++  c  types 

6
(A + B + C)≠(A + C + B)とコンパイラの並べ替え
2つの32ビット整数を追加すると、整数オーバーフローが発生する可能性があります。 uint64_t u64_z = u32_x + u32_y; このオーバーフローは、32ビット整数の1つが最初にキャストされるか、64ビット整数に追加される場合に回避できます。 uint64_t u64_z = u32_x + u64_a + u32_y; ただし、コンパイラが追加の順序を変更することを決定した場合: uint64_t u64_z = u32_x + u32_y + u64_a; それでも整数オーバーフローが発生する可能性があります。 コンパイラはそのような並べ替えを行うことができますか、それとも、結果の矛盾に気づき、式の順序をそのまま維持することを信頼できますか?

11
2 GBを超えるコードでのGCCコンパイルエラー
私は合計で約2.8 GBのオブジェクトコードの膨大な数の関数を持っています(残念ながら、回避策はありません。科学計算...) それらをリンクしようとすると、(予期される)relocation truncated to fit: R_X86_64_32Sエラーが発生し-mcmodel=mediumます。コンパイラフラグを指定することで回避したいと考えました。私が制御していることに加えてリンクされているすべてのライブラリは、-fpicフラグを使用してコンパイルされています。 それでもエラーは解決せず、リンク先のライブラリの一部がPICでコンパイルされていないと思います。 ここにエラーがあります: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x12): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_fini' defined in .text section in /usr/lib64/libc_nonshared.a(elf-init.oS) /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x19): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_init' defined in .text section in /usr/lib64/libc_nonshared.a(elf-init.oS) /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function …
108 c++  c  gcc  compiler-errors 

1
Cの「[0…255] =」構文とは何ですか?
js0n.cを参照する コードの構文は次のとおりです。 static void *gostruct[] = { [0 ... 255] = &&l_bad, ['\t'] = &&l_loop, [' '] = &&l_loop, ['\r'] = &&l_loop, ['\n'] = &&l_loop, ['"'] = &&l_qup, [':'] = &&l_loop, [','] = &&l_loop, ['['] = &&l_up, [']'] = &&l_down, // tracking [] and {} individually would allow fuller validation …
108 c  gcc-extensions 

11
範囲内からランダムな整数を生成する方法
これは以前に投稿された質問の続きです: Cで乱数を生成する方法は? サイコロの側面を模倣するために、1から6などの特定の範囲内から乱数を生成できるようにしたいと考えています。 これを行うにはどうすればよいですか?
108 c  random 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.