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

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

9
コンパイルエラー:「g ++: 'cc1plus'を実行しようとしてエラー:execvp:そのようなファイルまたはディレクトリはありません」
C / C ++プログラムをpopenin php...でコンパイルすると、次のエラーが発生しました。 g++: error trying to exec 'cc1plus': execvp: No such file or directory しかし、シェルでphpコードを実行すると、うまく動作します。 Arch Linux .. PHPコード: <?php function rfile($fp) { $out=""; while (!feof($fp)) { $out.= fgets($fp, 1024000); } return $out; } $p = popen('g++ -Wall -g aplusb.cc -o aplusb 2>&1', 'r'); $result = rfile($p); …
95 php  c++  c  linux  gcc 

3
「メモリストンプ」とは何ですか?
私は「記憶を踏み鳴らす」について言及しているこのブログ投稿に出くわしました: メモリを簡単に踏み付けることができるC ++プログラム(マネージコードの世界で生まれた場合、おそらく聞いたこともないもの) そして実際、私はそれについて聞いたことがありません! それで、これは何ですか、メモリを踏み鳴らして、メモリを踏みつけますか?いつ発生しますか?


8
「ダブルフリーまたは破損」エラーを追跡する方法
(C ++)プログラムを実行すると、このエラーでクラッシュします。 * glibcが検出されました*。 / load:ダブルフリーまたは破損(!prev):0x0000000000c6ed50 *** エラーを追跡するにはどうすればよいですか? print(std::cout)ステートメントを使用しようとしましたが、成功しませんでした。でしたgdbこれを簡単にしますか?
95 c++  c  debugging  free 


2
プロジェクトにアセンブリファイルが含まれている場合のmmapからの予期しないexec権限
これで頭を壁に打ちつけています。 私のプロジェクトではmmap、マッピング(/proc/self/maps)を使用してメモリを割り当てているときに、読み取り可能なメモリのみを要求したにもかかわらず、それが読み取り可能で実行可能な領域であることを示しています。 strace(見栄えは良かった)やその他のデバッグを調べたところ、この奇妙な問題を回避していると思われる唯一のこと、つまりプロジェクトからアセンブリファイルを削除し、純粋なCのみを残すことを特定できました(何ですか?)。 だからここに私の奇妙な例が​​あります、私はUbunbtu 19.04とデフォルトのgccに取り組んでいます。 ターゲットの実行可能ファイルをASMファイル(空)でコンパイルするとmmap、読み取り可能で実行可能な領域が返されます。ビルドしないと、正しく動作します。/proc/self/maps私の例に組み込んだ出力を参照してください。 example.c #include <stdio.h> #include <string.h> #include <sys/mman.h> int main() { void* p; p = mmap(NULL, 8192,PROT_READ,MAP_ANONYMOUS|MAP_PRIVATE,-1,0); { FILE *f; char line[512], s_search[17]; snprintf(s_search,16,"%lx",(long)p); f = fopen("/proc/self/maps","r"); while (fgets(line,512,f)) { if (strstr(line,s_search)) fputs(line,stderr); } fclose(f); } return 0; } example.s:空のファイルです! アウトプット ASM付属バージョン VirtualBox:~/mechanics/build$ gcc example.c …
94 c  linux  assembly  mmap 

13
C#とC-パフォーマンスの大きな違い
CとC#の類似コード間でパフォーマンスの大きな違いを見つけています。 Cコードは次のとおりです。 #include <stdio.h> #include <time.h> #include <math.h> main() { int i; double root; clock_t start = clock(); for (i = 0 ; i <= 100000000; i++){ root = sqrt(i); } printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC); } そして、C#(コンソールアプリ)は次のとおりです。 using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication2 { …
94 c#  c  performance 

9
この1988 Cコードの何が問題になっていますか?
私は本「Cプログラミング言語」(K&R)からこのコードをコンパイルしようとしています。これは、UNIXプログラムの最低限のバージョンですwc。 #include <stdio.h> #define IN 1; /* inside a word */ #define OUT 0; /* outside a word */ /* count lines, words and characters in input */ main() { int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while ((c = getchar()) …
94 c 

17
関数ポインタのポイントは何ですか?
関数ポインタの有用性がわかりません。場合によっては(おそらく存在しますが)役立つと思いますが、関数ポインターを使用する方が良い場合や避けられない場合は考えられません。 (CまたはC ++での)関数ポインタの適切な使用例をいくつか教えてください。
94 c++  c  function  pointers  c++-faq 

12
CからLinuxでPIDを使用してプロセスのCPU使用率を計算する方法
プログラムで[C言語で] Linuxの特定のプロセスIDのCPU使用率を計算したい。 特定のプロセスのリアルタイムCPU使用率を取得するにはどうすればよいですか? さらに明確にするために: 提供されたプロセスIDまたはプロセスのCPU使用率を特定できるはずです。 プロセスは子プロセスである必要はありません。 「C」言語のソリューションが必要です。
94 c  linux  cpu-usage 

7
警告としてエラーとして扱われることなくコンパイルする方法は?
問題は、Windowsで正常にコンパイルされる同じコードがUbuntuでコンパイルできないことです。このエラーが発生するたびに: cc1: warnings being treated as errors さて、それは大きなコードベースであり、すべての警告を修正したくありません。 警告にもかかわらず、正常にコンパイルできる方法はありますか?

10
C ++クラスのメモリ構造に「スペーサー」を作成するにはどうすればよいですか?
問題 ローレベルベアメタル埋め込みコンテキスト、私はそのようなアクセスメモリ位置にユーザを禁止するために、C ++構造内の任意の名前なしで、メモリ内の余白を作成したいです。 現在、私はuint32_t :96;3ワードの代わりになる醜いビットフィールドを配置することでそれを達成しましたが、GCC(ビットフィールドが大きすぎてuint32_tに収まらない)から警告が出されます。これはかなり合法です。 正常に動作しますが、数百の警告が含まれるライブラリを配布する場合は、それほどクリーンではありません... どうすれば適切に実行できますか? そもそもなぜ問題があるのですか? 私が取り組んでいるプロジェクトは、マイクロコントローラーライン全体(STMicroelectronics STM32)のさまざまな周辺機器のメモリ構造を定義することです。そうするために、結果は、対象となるマイクロコントローラーに応じて、すべてのレジスターを定義するいくつかの構造体の結合を含むクラスです。 非常に単純なペリフェラルの簡単な例は次のとおりです。汎用入出力(GPIO) union { struct { GPIO_MAP0_MODER; GPIO_MAP0_OTYPER; GPIO_MAP0_OSPEEDR; GPIO_MAP0_PUPDR; GPIO_MAP0_IDR; GPIO_MAP0_ODR; GPIO_MAP0_BSRR; GPIO_MAP0_LCKR; GPIO_MAP0_AFR; GPIO_MAP0_BRR; GPIO_MAP0_ASCR; }; struct { GPIO_MAP1_CRL; GPIO_MAP1_CRH; GPIO_MAP1_IDR; GPIO_MAP1_ODR; GPIO_MAP1_BSRR; GPIO_MAP1_BRR; GPIO_MAP1_LCKR; uint32_t :32; GPIO_MAP1_AFRL; GPIO_MAP1_AFRH; uint32_t :64; }; struct { uint32_t :192; GPIO_MAP2_BSRRL; GPIO_MAP2_BSRRH; uint32_t …

4
uint32、int32、uint64、int64などの型がstdlibヘッダーで定義されていますか?
私はソースコードがuint32、uint64などのタイプを使用しているのをよく見ます。アプリケーションコードでプログラマーがそれらを定義する必要があるのか​​、それとも標準のlibヘッダーで定義されるのかと思います。 アプリケーションのソースコードでこれらの型を使用する最良の方法は何ですか?
94 c  std 

3
SRC、OBJ、BINサブディレクトリを持つCプロジェクトのMakefileを作成するにはどうすればよいですか?
数か月前、私はMakefile学校の課題のために次のジェネリックを思いつきました。 # ------------------------------------------------ # Generic Makefile # # Author: yanick.rochon@gmail.com # Date : 2010-11-05 # # Changelog : # 0.01 - first version # ------------------------------------------------ # project name (generate executable with this name) TARGET = projectname CC = gcc -std=c99 -c # compiling flags here CFLAGS = -Wall -I. LINKER …
94 c  makefile 

3
GDBでスタックの内容を確認するにはどうすればよいですか?
私はGDBを初めて使用するので、いくつか質問があります。 スタックの内容を確認するにはどうすればよいですか?例:レジスターの内容を表示するには、と入力しinfo registersます。スタックの場合、それはどうあるべきですか? 内容を確認するにはどうすればよい$0x4(%esp)ですか?と入力するとprint /d $0x4(%esp)、GDBでエラーが発生します。 プラットフォーム:LinuxおよびGDB
94 c  assembly  gdb 

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