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

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

8
__stdcallとは何ですか?
私はWin32プログラミングについて学び、WinMainプロトタイプは次のようになります。 int WINAPI WinMain ( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmd_line, int cmd_show ) 私はこのWINAPI識別子が何のためにあるのか混乱し、見つかりました: #define WINAPI __stdcall これは何をしますか?私はこれが戻り値の型の後に何かを持っていることに混乱しています。何の__stdcallため?戻り値の型と関数名の間に何かがある場合、それはどういう意味ですか?

12
C / C ++ソースコードを一連のコーディング標準と照合する無料のツールですか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善したいですか?Stack Overflowのトピックとなるように質問を更新します。 6年前休業。 この質問を改善する Java(Checkstyle、JCSC)用のそのようなツールを見つけるのは非常に簡単に見えますが、C / C ++用のツールを見つけることができないようです。私は糸くずのような静的コードアナライザーを探していません。変数の名前付け、大文字の使用、間隔、識別、ブラケットの配置などのコーディング標準に対してチェックしたいだけです。
151 c++  c  coding-style 

4
CMakeでは、コンパイラがClangかどうかをどのようにテストできますか?
一連のクロスプラットフォームCMakeビルドスクリプトがあり、Visual C ++およびGCCでのビルドをサポートしています。 Clangを試していますが、CMakeスクリプトでコンパイラがClangであるかどうかをテストする方法がわかりません。 コンパイラがClangかどうかを確認するには何をテストすればよいですか?現在Visual C ++とGCC を使用MSVCしCMAKE_COMPILER_IS_GNU<LANG>てテストしています。
151 c++  c  cmake  clang 

10
GCCの## __ VA_ARGS__トリックの標準的な代替手段ですか?
C99の可変個引数マクロの空の引数に関するよく知られた 問題があります。 例: #define FOO(...) printf(__VA_ARGS__) #define BAR(fmt, ...) printf(fmt, __VA_ARGS__) FOO("this works fine"); BAR("this breaks!"); BAR()C99標準によれば、上記の使用は実際には正しくありません。 printf("this breaks!",); 末尾のコンマに注意してください-機能しません。 一部のコンパイラー(例:Visual Studio 2010)は、その末尾のコンマを静かに削除します。他のコンパイラ(例:GCC)##は__VA_ARGS__、の前に置くことをサポートしています。 #define BAR(fmt, ...) printf(fmt, ##__VA_ARGS__) しかし、この動作を実現するための標準準拠の方法はありますか?おそらく複数のマクロを使用していますか? 現在、##バージョンはかなりサポートされているようですが(少なくとも私のプラットフォームでは)、実際には標準に準拠したソリューションを使用します。 プリエンプティブ:小さな関数を書くことができることは知っています。マクロを使用してこれを実行しようとしています。 編集:BAR()を使用する理由の例(単純ですが)を次に示します。 #define BAR(fmt, ...) printf(fmt "\n", ##__VA_ARGS__) BAR("here is a log message"); BAR("here is a log message with a …


4
CからGo関数を呼び出す
Cプログラム(たとえば、カーネルモジュールなど)とのインターフェイスとしてGoで記述された静的オブジェクトを作成しようとしています。 GoからのC関数の呼び出しに関するドキュメントは見つかりましたが、他の方法についてはあまりわかりません。私が見つけたのは、それは可能ですが複雑であるということです。 これが私が見つけたものです: CとGo間のコールバックに関するブログ投稿 Cgoのドキュメント Golangメーリングリストの投稿 誰もがこれを経験していますか?つまり、完全にGoで記述されたPAMモジュールを作成しようとしています。

4
なぜこの記憶を食べる人は本当に記憶を食べないのですか?
Unixサーバーでメモリ不足(OOM)の状況をシミュレートするプログラムを作成したいと思います。私はこの超シンプルなメモリイーターを作成しました: #include <stdio.h> #include <stdlib.h> unsigned long long memory_to_eat = 1024 * 50000; size_t eaten_memory = 0; void *memory = NULL; int eat_kilobyte() { memory = realloc(memory, (eaten_memory * 1024) + 1024); if (memory == NULL) { // realloc failed here - we probably can't allocate more memory for whatever …


5
Clangをllvm IRにコンパイルする方法
clang でバイナリ実行可能ファイルではなくバイトC/C++コードにLLVMコードをコンパイルしてほしい。どうすればそれを達成できますか?そして、LLVMバイトコードを取得した場合、それをバイナリ実行可能ファイルにさらにコンパイルするにはどうすればよいでしょうか。 基本的にLLVM、バイナリ実行可能ファイルにコンパイルする前に、独自のコードの一部をバイトコードに追加します。
150 c  llvm  clang 

12
なぜx [0]!= x [0] [0]!= x [0] [0] [0]なのですか?
私はC ++を少し勉強していて、ポインタを使って戦っています。次のように宣言することで、3レベルのポインタを使用できることを理解しています。 int *(*x)[5]; これ*xは、へのポインタである5つの要素の配列へのポインタintです。また、私はそれを知っているx[0] = *(x+0);、x[1] = *(x+1)ようにして.... それで、上記の宣言を考えると、なぜx[0] != x[0][0] != x[0][0][0]ですか?
149 c++  c  arrays  pointers 

17
constポインターのポイントは何ですか?
私はconst値へのポインターについて話しているのではなく、constポインター自体について話している。 私は非常に基本的なものを超えてCとC ++を学んでいて、今日まで、ポインタが値によって関数に渡されることに気づきました。これは理にかなっています。つまり、関数内では、呼び出し元からの元のポインターに影響を与えることなく、コピーしたポインターを他の値にポイントできます。 それで、関数ヘッダーがあることの意味は何ですか? void foo(int* const ptr); このような関数の内部では、ptrを他のものにポイントすることはできません。これはconstであり、変更したくないためですが、次のような関数です。 void foo(int* ptr); 同様に仕事をします!ポインタはとにかくコピーされ、コピーを変更しても呼び出し元のポインタは影響を受けないためです。それでは、constの利点は何ですか?
149 c++  c  pointers  const 

3
.txtファイルに書き込みますか?
どうすれば小さなテキストを.txtファイルに書き込むことができますか?3〜4時間以上グーグルを使用していますが、その方法を見つけることができません。 fwrite(); 非常に多くの議論があり、私はそれを使用する方法がわかりません。 .txtファイルに名前といくつかの数字のみを書き込みたい場合に使用する最も簡単な関数は何ですか? 編集:私のコードの一部を追加しました。 char name; int number; FILE *f; f = fopen("contacts.pcl", "a"); printf("\nNew contact name: "); scanf("%s", &name); printf("New contact number: "); scanf("%i", &number); fprintf(f, "%c\n[ %d ]\n\n", name, number); fclose(f);
149 c  linux 

8
PythonプログラムをC / C ++コードに変換しますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 3年前休業。 この質問を改善する PythonプログラムをC / C ++に変換することは可能ですか? いくつかのアルゴリズムを実装する必要があります。C/ C ++で実行するときに経験するすべての痛みを正当化するのに十分なパフォーマンスギャップがあるかどうかはわかりません(私は得意ではありません)。私は、1つの単純なアルゴリズムを作成して、そのような変換されたソリューションに対してベンチマークすることを考えました。それだけでPythonバージョンよりもはるかに高速である場合は、C / C ++で実行する以外に選択肢はありません。
149 c++  python  c  code-generation 

2
ループや条件付きステートメントなしで1から1000まで印刷するCコードはどのように機能しますか?
ループや条件なしで1から1000までCを出力するコードを見つけました。しかし、それがどのように機能するのかわかりません。誰かがコードを調べて各行を説明できますか? #include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&main + (&exit - &main)*(j/1000))(j+1); }

5
なぜこのコードはバッファオーバーフロー攻撃に対して脆弱なのですか?
int func(char* str) { char buffer[100]; unsigned short len = strlen(str); if(len >= 100) { return (-1); } strncpy(buffer,str,strlen(str)); return 0; } このコードはバッファオーバーフロー攻撃に対して脆弱であり、私はその理由を理解しようとしています。の代わりにとlen宣言されていることに関係していると思いますが、本当にわかりません。shortint 何か案は?

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