0

C ++関連のLinux作業をしているときに、この問題について考えています。

私が聞きたい質問がいくつかあります:

  1. C ++スタイルの動的割り当てはLinuxシステムコールをサポートしていますか?

    C++はnew/deleteを使用するため、マニュアルページでは、LinuxシステムコールはCスタイルの動的割り当てを使用します。それらを同じ意味で使用できますか、それともC ++スタイルの動的変数をCスタイルの動的変数に渡すという制限がありますか?または、一貫性がある限りそれらを維持するだけで、大丈夫ですか?

    良いコーディングスタイル(メンテナンスが簡単、デバッグが簡単など)で答えてください。

  2. さらに、この質問は、C++を使用してLinuxシステム関連の作業を開発する方法に焦点を当てていますか?

    必要なときにいつでもCを使用しますか?それ以外の場合は、主要な作業にC ++を使用しますか?または、これを行うためのより良い方法がありますか?

  3. ヘッダーで、C ++プログラムのglob.hとしましょう。それとも#include <glob.h>、他の方法がありますか?

私は本当にこの問題について業界の標準が何であるかを知りたいです。

4

3 に答える 3

3

1.C++ スタイルの動的割り当ては Linux システム コールをサポートしていますか?

C++ は new/delete を使用するため、man ページでは、Linux システム コールは C スタイルの動的割り当てを使用します。それらを同じ意味で使用できますか、それとも C++ スタイルの動的変数を C スタイルの動的変数に渡すことに制限がありますか? または、一貫している限りそのままにしておくだけで問題ありませんか?

newおよびと安全にdelete混合することはできません。しかし、C++ 自体は, andを使用できますが、適切な「オブジェクト」の場合はこれまでのところしか取得できません: 多くの既存の C++ ライブラリ コードのハードコードはandを使用しており、「placement-newing」を処理する必要があります。オブジェクトを自分で破壊します。and の観点から独自のand演算子を定義することを検討できますが、それが行われるのを見たことはありません。典型的な C ヒープ関数は、おそらくより大きな平均割り当てサイズ用に最適化されていますが、C++ は多数の小さな要求を含む可能性があるため、パフォーマンスとメモリ パッケージの効率に関する考慮事項があるかもしれません....mallocreallocfreemallocreallocfreenewdeletenewdeletemallocfree

適切なコーディング スタイル (メンテナンスが容易、デバッグが容易など) で回答していただければ幸いです。

保守性と一貫性のために、C++ プログラムは、mallocet al の使用を最小限にするか、または排除する傾向があります。

2.さらに、この質問は、C++ を使用して Linux システム関連の作業を開発する方法に焦点を当てていますか?

必要なときはいつでも C を使用しますか? それ以外の場合は、主要な作業に C++ を使用しますか? または、これを行うためのより良い方法はありますか?

C++ は C のほぼスーパーセットであり、大規模で保守しやすく効率的なプログラムを作成するための非常に優れた機能を備えています。使用方法を知っている場合は、デフォルトで使用する必要があります。より移植性が必要な場合、または C++ を賢明に使用することを信頼できない他の人々とチームで作業したい場合は、C を使用してください。(そして、私は真剣にそれを言います。)

3. ヘッダーでは、glob.h としましょう。C++ プログラムでは、単に #include する必要がありますか、それとも別の方法がありますか?

extern "C" {はい...ただし、前の行と}次の行でそれを囲んで、C++ シンボル名のマングリングを抑制したい場合があります。

于 2012-08-14T05:03:22.610 に答える
1

#1。はい

#2。

必要なときにいつでもcを使用しますか?それ以外の場合は、主要な作業にc ++を使用しますか?

はい。

Linuxの機能の大部分は、Cインターフェイスによって提供されます。 boost素晴らしい反例です。そこにはLinux固有の機能はありませんが、一般的な機能は、によって提供される機能よりもはるかに自然に適合しglibcます。

#3。はい、それを行うことができます。または、検討することもできますboost::filesystem(または同様の方法)。

于 2012-08-14T04:57:00.943 に答える
0

IIRC (*nix で C++ を書いてから約 5 年になります) C++ は、コンパイラによっては同じ C 構文などを使用して、C プログラムとまったく同じように記述およびコンパイルできます。gnu コンパイラがこれをサポートしていると思います。C プログラマーが C++ への移行に遭遇するのは、最後の cpp を除いて実際には C プログラムである C++ プログラムを作成するという点で危険です。:D

私が理解しているのは、C++ プログラムを作成するときに、C++ で関数を呼び出す方法とほとんどまたはまったく違いなく、システム関数を呼び出すことができるということです。これらは単なる関数呼び出しであるためです。メモリの割り当てとクリーンアップを担当するのはあなたです (または、'new' や 'destroy' などの組み込みの C++ メモリ管理、またはプロジェクトに関連付けたガベージ コレクターを使用します。Linux システム関数を呼び出しているという事実作成する C ライクな関数と同じように呼び出すだけです。

教えられた方法でコードを書くのが良い C++ コーディング スタイルだと思います。あなたが思っているよりも心配することは少ないと思います。

于 2012-08-14T05:15:37.823 に答える