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

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

19
典型的なステートマシン実装パターンはありますか?
Cで単純な状態マシンを実装する必要があります。 標準のswitchステートメントは最善の方法ですか? 現在の状態(state)と遷移のトリガーがあります。 switch(state) { case STATE_1: state = DoState1(transition); break; case STATE_2: state = DoState2(transition); break; } ... DoState2(int transition) { // Do State Work ... if(transition == FROM_STATE_2) { // New state when doing STATE 2 -> STATE 2 } if(transition == FROM_STATE_1) { // New State when …

6
C文字配列の初期化
次の方法で初期化した後、char配列に何が入るかわかりません。 1. char buf[10] = ""; 2. char buf[10] = " "; 3。char buf[10] = "a"; ケース2の場合は、私が考えるbuf[0]べきである' '、buf[1]あるべき'\0'、とからbuf[2]のbuf[9]ランダムな内容になります。ケース3の場合、私は考えるbuf[0]べきである'a'、buf[1]「\ 0」でなければなりません、そしてからbuf[2]のbuf[9]ランダムな内容になります。 あれは正しいですか? そして、ケース1の場合、何が入りますbufか?buf[0] == '\0'以下とからbuf[1]のbuf[9]ランダムな内容でしょうか?

4
#.hまたは.c / .cppに含める?
CまたはC ++のいずれかでコーディングする場合、どこに#include? callback.h: #ifndef _CALLBACK_H_ #define _CALLBACK_H_ #include <sndfile.h> #include "main.h" void on_button_apply_clicked(GtkButton* button, struct user_data_s* data); void on_button_cancel_clicked(GtkButton* button, struct user_data_s* data); #endif callback.c: #include <stdlib.h> #include <math.h> #include "config.h" #include "callback.h" #include "play.h" void on_button_apply_clicked(GtkButton* button, struct user_data_s* data) { gint page; page = gtk_notebook_get_current_page(GTK_NOTEBOOK(data->notebook)); ... すべてのインクルードは.hまたは.c / …
118 c++  c 

14
C ++を学ぶ前にCを学ぶべきですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 今日は大学のCS学部の開校日を訪れました。ラボのツアーでは、学部生からの最終年度プロジェクトのいくつかを試してみました。1つは特に良かった-一種のFPS小惑星ゲーム。私はsrcそれがC ++(他のプロジェクトのほとんどがJava 3Dアプリであった)で行われたことを見つけるためにディレクトリをのぞくと決めました。 私は以前にCをやったことがありませんが、以前にCコードを調べました。このゲームの.cppコードで見たものとは、それほど違って見えませんでした。 私はCまたはC ++のどちらかを学ぶことに興味がありますが、おそらくもう一方については後で学ぶことになります。私は他の前に1学習への効果があるとそうならば、人は?
117 c++  c 


12
CおよびC ++で「const static」とはどういう意味ですか?
const static int foo = 42; StackOverflowの一部のコードでこれを確認しましたが、何ができるのかわかりませんでした。それから私は他のフォーラムでいくつかの混乱した答えを見ました。私の推測では、foo他のモジュールから定数を隠すためにCで使用されていると思います。これは正しいです?もしそうなら、なぜ誰もがあなたがそれを作ることができるC ++コンテキストでそれを使うのprivateですか?
117 c++  c 

5
エラー:Libtoolライブラリが使用されていますが、 'LIBTOOL'は未定義です
私はautomakeOrientDb C ++ライブラリを試していますが、いくつかのエラーが出ます。 Makefile.am:10: error: Libtool library used but 'LIBTOOL' is undefined Makefile.am:10: The usual way to define 'LIBTOOL' is to add 'LT_INIT' Makefile.am:10: to 'configure.ac' and run 'aclocal' and 'autoconf' again. Makefile.am:10: If 'LT_INIT' is in 'configure.ac', make sure Makefile.am:10: its definition is in aclocal's search path. https://github.com/tglman/orientdb-c https://github.com/tglman/orientdb-c/wiki/Install …
117 c  linux  autotools  orientdb 

11
例外コード「EXC_I386_GPFLT」の意味は何ですか?
例外コードの意味は何EXC_I386_GPFLTですか? その意味は状況によって異なりますか? その場合、私はEXC_BAD_ACCESS例外コードで例外タイプを参照していますEXC_I386_GPFLT プログラムはXcode 5.0.1で開発されてcblas_zgemm()おり、BLASライブラリを扱います(まあ、それは問題ではないと思います...) どうもありがとうございました!
117 c++  c  exc-bad-access 

5
Linux in Cで共有メモリを使用する方法
私のプロジェクトの1つに少し問題があります。 私は共有メモリを使用してよく文書化された例を見つけようとしましfork()たが、成功しませんでした。 :基本的なシナリオは、ユーザーがプログラムを起動したときに、私は、共有メモリ内の2つの値格納する必要があるということですCURRENT_PATHでのchar *とfile_nameにもあるのchar *を。 コマンド引数に応じて、新しいプロセスが開始され、file_name変数は読み取り専用であるがfork()、そのプロセスは共有メモリに格納されているcurrent_path変数を読み取り、変更する必要があります。 あなたが私に指示することができるサンプルコード(可能な場合)を含む共有メモリに関する良いチュートリアルはありますか?
117 c  linux  fork  shared-memory 


30
C言語と比較してC ++の制限は何ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する C ++の利点は次のとおりです C ++は、彼らが求めている特定の機能を提供します 彼らのCコンパイラはほぼ間違いなくC ++コンパイラなので、ソフトウェアのコストへの影響はありません C ++はCと同様に移植可能です C ++コードは、Cと同じくらい(またはそれ以上またはそれ以下)効率的です。 C ++ではなくCを使用する必要がある具体的な理由と特定のシナリオはありますか? この質問への参照:Cのジェネリックのライブラリ 重複ではありません。この質問は言語の制限について尋ねているのであり、ある言語を別の言語で学ぶべき/すべきではないためです。 Peter Kirkhamの投稿は、特に私が考慮していなかったC99の問題に関して、私にとって最も有益であったので、それを受け入れました。参加してくれた他のすべての人に感謝します。
116 c++  c 

30
コンパイラ/オプティマイザがより高速なプログラムを作成できるようにするコーディングプラクティス
何年も前、Cコンパイラはそれほど賢くありませんでした。回避策としてK&Rがregisterキーワードを考案し、コンパイラーにヒントを与えるために、この変数を内部レジスターに保持することをお勧めします。彼らはまた、より良いコードの生成を支援するために三次演算子を作りました。 時間の経過とともに、コンパイラは成熟しました。フロー分析により、レジスタにどの値を保持するかを、ユーザーが実行できるよりも適切に決定できるという点で、非常に賢くなりました。registerキーワードは重要ではなくなりました。 FORTRANは、エイリアスの問題により、ある種の操作ではCよりも高速になる場合があります。理論的には、注意深くコーディングすれば、オプティマイザがより高速なコードを生成できるように、この制限を回避できます。 コンパイラ/オプティマイザがより高速なコードを生成できるようにするために、どのようなコーディングプラクティスを利用できますか? 使用するプラットフォームとコンパイラを特定していただければ幸いです。 なぜテクニックはうまくいくように見えるのですか? サンプルコードが推奨されます。 ここに関連する質問があります [編集] この質問は、プロファイルを作成して最適化するプロセス全体に関するものではありません。プログラムが正しく記述され、完全に最適化されてコンパイルされ、テストされ、本番環境に導入されていると想定します。コード内に、オプティマイザが可能な最善の仕事をすることを禁止する構成要素があるかもしれません。これらの禁止事項を取り除き、オプティマイザがさらに高速なコードを生成できるようにするには、リファクタリングに何ができますか? [編集] オフセット関連リンク

11
「C99モード以外で使用されるforループの初期宣言」GCCエラーを修正するにはどうすればよいですか?
3n + 1の問題を解決しようとしていforますが、次のようなループがあります。 for(int i = low; i <= high; ++i) { res = runalg(i); if (res > highestres) { highestres = res; } } 残念ながら、GCCでコンパイルしようとすると、このエラーが発生します。 3np1.c:15:エラー:C99モード以外で使用された 'for'ループの初期宣言 C99モードが何かわかりません。何か案は?
116 c  gcc  for-loop 


3
mainがここで0を返さないのはなぜですか?
読んでただけ ISO / IEC 9899:201x委員会草案— 2011年4月12日 5.1.2.2.3プログラムの終了で見つけた場所 ..reaching the } that terminates the main function returns a value of 0. つまり、でreturnステートメントを指定せずmain()、プログラムが正常に実行された場合、mainの右中括弧}で0が返されます。 しかし、次のコードではreturnステートメントを指定していませんが、0を返しません #include<stdio.h> int sum(int a,int b) { return (a + b); } int main() { int a=10; int b=5; int ans; ans=sum(a,b); printf("sum is %d",ans); } コンパイル gcc test.c …
116 c  linux  return  main 

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