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

静的に型付けされた自由形式のマルチパラダイムでコンパイルされた汎用プログラミング言語であるC ++に関する質問。

4
ビルドスクリプトをC ++で書くのは理にかなっていますか?
私はCMakeを使用してプロジェクトIDE / makefileを生成していますが、それでもコンパイル済みファイルを操作したり、コードを生成したりするためにカスタムの「スクリプト」を呼び出す必要があります。 以前のプロジェクトではPythonを使用していましたが大丈夫でしたが、現在作業中の2つの非常に大きなプロジェクトで多くの依存関係を管理するのが大変なため、どこでも依存関係を最小限に抑えたいと思います。 誰かが、そのための言語依存関係を追加する代わりに、C ++を使用してビルドスクリプトを作成するように私に提案しました。プロジェクトのテーマはすでにC ++を使用しているため、いくつかの利点があります。 プロジェクト全体をビルドするには、C ++コンパイラとCMakeのみが必要であり、他には何も必要ありません(他の依存関係はすべてCまたはC ++です)。 C ++の型安全性(最新のC ++を使用する場合)により、すべてが「正しく」なりやすくなります。 また、私がよく知っている言語でもあるため、優れたPythonコードを書くことができたとしても、安心して使用できます。 実行速度の潜在的な向上(ただし、実際に知覚できるとは思わない); しかし、いくつかの欠点があるかもしれないと思うし、私はまだ試していないので、本当の影響がわからない: コードを書くのに時間がかかるかもしれません(私はC ++で十分に効率が良いのですぐに動作するものを書くので確信がないと言ったので、このシステムでは書くのにそれほど長くはないかもしれません) tこの場合は問題になります); 入力として読み込むテキストファイルはすべてUTF-8であると想定する必要があります。実行時にC ++で簡単にチェックできるかどうかはわかりませんが、言語ではチェックされません。 C ++のライブラリは、スクリプト言語よりも管理が困難です。 私には経験と洞察力が欠けているので、長所と短所が足りないかもしれません。質問は次のとおりです。これにC ++を使用するのは理にかなっていますか?報告する経験はありますか、また重要な利点と欠点がありますか?

6
C#がわからない場合に優れたC#開発者を雇う方法は?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私はC ++開発者です。Windowsがネイティブレベルでどのように機能するかは知っていますが、私はC#と.NETの専門家ではありません。チームにC#開発者が必要になりました(開発者はすべてC ++です)。C#のレベルがわからない場合、どうすれば優れたC#開発者を雇うことができますか?質問をする方法、答えがすばらしいか、または愚かな間違いがあるかどうかをテストする方法は?
15 c#  c++  hiring 

6
普遍的にクロスプラットフォームのC ++コードを作成し、すべてのOS向けに製品を出荷するのはそれほど簡単ではないことを説明するにはどうすればよいですか?
私たちの会社はWindows向けにさまざまなデスクトップ製品を出荷しており、多くのLinuxユーザーはフォーラムで何年も前にLinux向けの製品のバージョンを書いておくべきであると不満を述べています。 私たちは貪欲な会社です 私たちの技術スペシャリストはすべて、資格のない馬鹿です 私たちの平均的な製品は、300万行のC ++コードのようなものです。 私と私の同僚の分析は次のとおりです。 クロスプラットフォームのC ++コードを書くことはそれほど簡単ではありません 多くのディストリビューションパッケージを準備して、Linuxのすべての普及バージョン用に維持するには時間がかかります 私たちの推定では、Linux市場は全ユーザーの5〜15%程度であり、それらのユーザーはおそらく私たちの努力にお金を払いたくないでしょう。 これが提起されたときの応答は、私たちが貪欲な不十分なバカだということです。 クロスプラットフォームコードを記述し、多数の配布パッケージを維持するのに多大な労力がかかるという事実の評価はどれほど合理的ですか?疑いの影を越えて、正確にどれだけの労力がかかるかを示す実際のストーリーで、簡単で詳細な分析をどこで見つけることができますか?

7
ゲームプログラミング:C#またはC ++?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 私が本当にやりたいのは、ゲームプログラミングを行うことです。だから、自問自答のプログラミングを学びたい18歳のとき、C#とC ++の間で最も適したプログラミング言語は何ですか?(私は、Windowsが依然として最も使用されるOSであると信じているため、Unixを気にしないと述べるべきです) 私はC ++の基本を知っていますが、C#については知りません。C ++にはチュートリアルガイド、dllなどがありますが、C#にはないことを知っていますが、一人でプログラムを開発するのは習得して使用する方がはるかに簡単ですが、プログラムが難読化されていても読んでいますソースを入手するのは簡単です。 まあ、まず基本に集中したいのですが、C ++の方が自分に適していると感じているからといって、C ++を好みますが、私は一人で働くことを考えなければなりません。だから、たとえそれが好きだったとしても、それが最善のことではないかもしれません。 どっちがいいかわからない、いろいろなウェブサイトでたくさんのスレッドを読んだことがあるし、C#がC ++よりも人気が出てきているようだ。しかし、そうは言っても、私はゲームプログラミングをしたいとも指定しました。ですから、「C ++はそうではないのに.NETメモリを処理するのでC#の方が簡単です」よりも良い点をいくつか知る必要があります。

10
遅いコンパイル環境でコーディングするための最善の方法は何ですか
私はC#でTDDスタイルのコーディングを使用していました。小さなコードの塊を作成/変更し、ソリューション全体を10秒で再コンパイルし、テストを再実行します。簡単... その開発方法論は、私が数年間、C ++コーディングに戻らなければならなかった昨年まで非常にうまく機能し、それ以来、私の生産性は劇的に低下したと感じています。言語としてのC ++は問題ではありません-私はC ++開発の経験がかなりありました...しかし、過去には。 私の生産性は小さなプロジェクトでも大丈夫ですが、プロジェクトのサイズが大きくなり、コンパイル時間が10分以上になると悪化します。そして、エラーを見つけた場合は、コンパイルを再開する必要があります。それは純粋にイライラさせられます。 したがって、私は小さなチャンク(以前のように)は受け入れられないと結論付けました-コードを手動でレビューするときに(高速C#コンパイラに依存せずに)1時間ほどコーディングの古い習慣にどのように身を置くことができますか? 、数時間に1回だけユニットテストを再コンパイル/再実行します。 C#とTDDでは、進化的な方法でコードを書くのは非常に簡単でした-数十回の繰り返しの後、私が始めたがらくたは良いコードになりましたが、それはもううまくいきません(遅いコンパイルで)環境)。

3
ループ内で変数を定義するのは良いですか?[閉まっている]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 4年前に閉鎖されました。 私のインストラクターはかつて、ループ内で変数を定義するべきではないと教えてくれましたが、正直なところまだ理由がわかりません。 その欠点は何ですか? 体はそれを私に説明できますか?

6
「名前空間を使用する」汚染とは何ですか?
私はグーグルコーディングガイドを見ていました[ここ]、彼らは私がそれを誤解しなかった場合、using namespaceまたはを使用することをお勧めしませんnamespace::function。 これstdは同様に適用されますか?cout<<それなしでは機能しません。この本は、同じことをお勧めします。では、またはなしで使用するにはどうすれcout<<ばusing namespace std;よいstd::cout<<ですか? 推奨される方法は何ですか?std::cout<<?ほとんどのC ++教科書using namespace std;は初心者向けに、コーディングの習慣が乏しいことを教えていますか?
15 c++  coding-style 

7
クラス変数を渡すクラスメソッドを作成したのは悪い考えですか?
ここに私が意味するものがあります: class MyClass { int arr1[100]; int arr2[100]; int len = 100; void add(int* x1, int* x2, int size) { for (int i = 0; i < size; i++) { x1[i] += x2[i]; } } }; int main() { MyClass myInstance; // Fill the arrays... myInstance.add(myInstance.arr1, myInstance.arr2, myInstance.len); } addクラスメソッドなので、必要なすべての変数に既にアクセスできますが、これは悪い考えですか?これを行うべき、またはすべきでない理由はありますか?

3
ライブラリにリンクする代わりに、ライブラリのソースを追加する必要がありますか?
私は比較的C ++に慣れていないため、小さな依存関係(スクリプト言語、JSON / YAML / XMLパーサーなど)をどのように処理するのが最適かはわかりません。 個別のプロジェクトを作成して静的ライブラリとしてリンクする必要がありますか、それとも.h / .cppファイルをメインプロジェクトに配置するだけの欠点がありますか? 後者は、互換性のないライブラリ(ライブラリをビルドするときに異なるコンパイラ設定)を扱うのに数時間費やしたため、はるかに簡単に思えますが、C ++を間違った方法で学習し始めたくありません。 それらを個別のライブラリとして保持することが望ましい場合、.lib / .aファイルがアプリケーションに正常にリンクされるように、コンパイルフラグを同期させるにはどうすればよいでしょうか? (私は現在MSVC 2015で作業していますが、目標はXCode / clangを使用してMac OS XおよびiOSでコンパイルすることです。そのため、少なくとも3つの異なるタイプのライブラリ(Win x86、Mac x64、ARM)に対処する必要があります)
14 c++  linking 

2
なぜC ++ライブラリの使用がそれほど複雑なのですか?
まず第一に、私はC ++が大好きで、JavaよりもC ++でコーディングする方が簡単だと思う人の1人です。1つの小さなことを除いて:ライブラリ。 Javaでは、ビルドパスにjarを追加するだけで完了です。 C ++では、通常、ヘッダーファイルとライブラリ自体に複数のパスを設定する必要があります。場合によっては、特別なビルドフラグを使用する必要さえあります。私は主にVisual Studio、コードブロックを使用しましたが、IDEはまったく使用していません。外部ライブラリの使用について話すとき、3つのオプションすべてに大きな違いはありません。 なぜこれに代わるシンプルな代替手段がなかったのだろうか?IDEがビルドフラグを設定するためのすべての作業を行うことができるように、必要なものがすべて1か所にある特別な.zipファイルがあるように。これには技術的な障壁はありますか?
14 java  c++  libraries 

7
C#は、C ++よりも「自分にぶら下がるロープ」を提供しますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 Joel Spolskyは、C ++を「自分を吊るすのに十分なロープ」と見なしました。実際、彼はScott Meyersによる「Effective C ++」を要約していました。 それは基本的に、C ++は自分を吊るすのに十分なロープであり、さらに数マイルのロープ、そしてM&Mを装った自殺薬がいくつかあるという本です... 私は本のコピーを持っていませんが、本の多くはランタイムがあなたのためにそれらの問題を管理するので、C#で意味がないと思われるメモリ管理の落とし穴に関連する兆候があります。 私の質問は次のとおりです。 C#は、注意深いプログラミングによってのみC ++で回避される落とし穴を回避しますか?その場合、どの程度、どのように回避されますか? C#には、新しいC#プログラマーが知っておくべき、新しい異なる落とし穴がありますか?もしそうなら、なぜC#の設計によってそれらを回避できなかったのでしょうか?

5
Javaの未定義の動作
私は、SOでこの質問を読んでいて、C ++の一般的な未定義の動作について説明していましたが、Javaにも未定義の動作がありますか? その場合、Javaの未定義の動作の一般的な原因は何ですか? そうでない場合、Javaのどの機能がそのような動作から解放されますか?これらのプロパティでCおよびC ++の最新バージョンが実装されていないのはなぜですか?

3
typedefを使用する場合
C ++でtypedefを使用すべきかどうか、またいつ使用すべきかについて少し混乱しています。読みやすさと明快さのバランスをとる行為だと思います。 typedefを使用しないコードサンプルを次に示します。 int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { static std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int> lookup_table; std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int>::iterator lookup_it = lookup_table.find(lookup_key); if (lookup_it != lookup_table.end()) return lookup_it->second; ... } かなりいIMO。そこで、関数内にtypedefをいくつか追加して、見栄えを良くします。 int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { typedef std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator> Lookup_key; typedef std::map<Lookup_key, int> Lookup_table; static Lookup_table lookup_table; Lookup_table::iterator lookup_it = lookup_table.find(lookup_key); …
14 c++  coding-style 

7
intのようなプリミティブ型をtypedefで処理する方法
私は次のようなC ++コードをたくさん見ましたtypedef。 typedefC ++プリミティブを使用するのとは対照的に、このような多くのを使用する利点は何ですか?これらの利点も達成できる別のアプローチはありますか? 最終的に、データはすべてメモリに保存されるか、ビットとバイトとしてワイヤを介して送信されますが、本当に重要ですか? types.h: typedef int16_t Version; typedef int32_t PacketLength; typedef int32_t Identity; typedef int32_t CabinetNumber; typedef int64_t Time64; typedef int64_t RFID; typedef int64_t NetworkAddress; typedef int64_t PathfinderAddress; typedef int16_t PathfinderPan; typedef int16_t PathfinderChannel; typedef int64_t HandsetSerialNumber; typedef int16_t PinNumber; typedef int16_t LoggingInterval; typedef int16_t DelayMinutes; typedef int16_t …

6
保護されたメソッドの実際のシナリオ
今日、私は基本的protectedにC ++コードでメソッドを使用しないことに気付きました。親の非パブリックメソッドを呼び出す必要性をほとんど感じないからです。テンプレートメソッドパターンではJavaでprotectedを使用していますが、C ++でプライベートメソッドをオーバーライドできるため、ここでも必要protectedありません。 それではprotected、C ++コードでメソッドを使用する実際のシナリオは何ですか? (私は一般的に実装の継承があまり好きではないことに注意してください、それは多くを説明するかもしれません...)

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