エラー、バグ、質問 - ページ 2417

 
Alexey Navoykov:

コンパイルしないことは承知しています。 構文チェック(MEでは「コンパイル」とも言います)のことです、前の投稿で括弧書きで指定したくらいですから。 C++コンパイラでも構文チェックを実行すれば(通常はコマンドラインから)、ダーリンみたいに悪態をつきますよ。

ほら、指定しない場合。

B b;

C++はこのコードを完璧にコンパイルします。だから、構文は正しいのです。問題は、オブジェクトの作成 レベルから始まります。なぜなら、そこでクラスオブジェクトが割り当てられるからです。

ヘッダーで使えるかどうか、絶対に確認しないようなテンプレートを想像してみてください。この場合、コンパイラはどうすればいいのでしょうか?ある構造体に対してstd:lowerを実装する必要があり、*.hに実装がなかったとします。チェックの段階でもコンパイラは文句を言わないはずです。

このコードをチェックするために、コマンドラインから*.hのシンタックスチェックをどのように行っているか、具体的に教えてください。面白くなった)

 
Andrey Pogoreltsev:

ほら、指定しない場合。

C++はこのコードを完璧にコンパイルします。それなら、構文は正しいです。

面白いロジックですね)また、コードを全く削除すると、さらに正しい構文になるのですね?特にBクラスが悪いとは言っていません。スタティックメソッドなどを 呼び出すのに使うことは十分あり得ます。

ヘッダーでの使用を確認しないテンプレートを想像してみてください。この場合、コンパイラはどうすればいいのでしょうか?

テンプレートは具体的な型に展開されたときだけチェックされる、と理解すればよい。

このコードをチェックするために、コマンドラインから*.hのシンタックスチェックをどのように行っているか、具体的に教えてください。面白くなってきた)

というのも、私はこのようなタンバリンに悩まされることなく、ヘッダーをコンパイルするVS用のマクロを書いたからです。 この目的のために、その場で現在のドキュメントモードをcppに切り替えてコンパイルし、元に戻します。 シンプルで趣味がよいです。

スタジオでヘッダー構文をチェックするための通常のオプションが全くないのは理解できない。私が使っているのはかなり古いバージョンなので、もしかしたらもう使えるかもしれません。

 
Alexey Navoykov:

スタジオでヘッダー構文をチェックするための通常のオプションが全くないのは理解できない。

Ctrl+F7 , この組み合わせは、少なくとも2008年以降に利用可能になったと思われます - 別ファイルのコンパイル
 
TheXpert:
Ctrl+F7 , この組み合わせは、少なくともStudio 2008から存在していたと思われます - 別ファイルのコンパイル
私はヘッダについて話していますが、この組み合わせはcppについて言及しています。少なくとも、私の2010年のスタジオではそうです。
 

投稿する前に、自分のビルドを再確認して長い間躊躇しましたが、やはりテスターはおかしい...。

テストは文字通り、冒頭で止まってしまった。

何も変えずに、2回目の「スタート」を押すと、最後まで行きます(中断した場所で少し間が空きます).

さらにいくつかのアプローチを行いました。結果は厳密に交互に(偶数/奇数で1つずつ)表示されます。崖」までは、バランスグラフは似ています。 ここでも、何も変更せず、"start "をクリックするだけです。

これは、別のキャラクターを追加する点である可能性が高い(テスト開始から5人全員ではダメなのか?)


実際のメモリ使用量の問題はさておき(タスクマネージャによると、1.2~1.4GBの空き、つまりレポートと一致)、同じテストを実行するのに必要なメモリ量が異なるということはないのでしょうか。そして、400Mbで十分というレポートがあれば、1.2Gbでそのようなテストを3回ほど行えばいいわけで...。

追加データ:5つのシンボルでのテスト、バーオープン別、H1、2004年...今日。本体には500要素のダブル配列が7つと、小さな配列構造(各シンボルのデータを格納、つまりこの場合は5×13)が1つあり、サイズは初期化時に設定され、それ以上変化しない、つまりメモリを消費するものは何もない、ということです。コードは手続き型で、シンプルで、小さく、再帰やインクルードライブラリを使わない。

4つのシンボルに効果がありますが、6-7-8には5つのシンボルと同じ効果があり、一度だけ効果があります。同時に、新しいキャラクターを追加した後、最初の1回は必ず動作し、次の1回は動作しない、そしてまた動作する、といった具合です。

メモリがタイムリーに解放されていない疑いがあり、その不足に関連するエラーの存在のみである。

合計3つの問題

  • 設定やコードに変更が ない場合、テストは一度だけ(厳密に)実行されます。
  • いくつかのテストに十分な空きメモリがあるが(テスト成功後のメッセージが信頼できる場合)、メモリ不足のエラーが表示される(試行回数が多い場合)。(成功時に400個、エラー時に1200個使用済み)
  • は、履歴がある場合、テストの途中で接続されるキャラクターがあります(シンクログで確認できます)。全シンボルの新しいバーごとにポーリング信号(ループ内)

 
Alexey Navoykov:
ヘッダーに関するもので、この組み合わせはcppを指しています。少なくとも、私の2010年のスタジオではそうです。
はい ( そして、あなたの方法は、ヘッダ用に空のcppを作るよりも便利なようです )
 

なぜ禁止されているのですか?

void fn(const int&) {}

void start() {
   fn(5);  // parameter passed as reference, variable expected

}
 
Vict:

なぜ禁止されているのですか?

なぜかわからないが、開発チームに聞いてみてほしい。
 
TheXpert:
これは太古の昔からの伝統で、リテラルは値のみ。

パラメータを参照渡しする ことは、メモリ上に変数が分散していることを意味する。

定数はどこにも保存されず、直接使用されます。

 
TheXpert:
理由はわかりません、開発者に聞いてみないと。

マゾヒストを喜ばせるために。標準のビリオに感心がなかったので、同じようなベクターを書くことにしたのですが、「仕掛け」が豊富なため、またまた過疎化が進んでいることが判明しました。

void push_back(const T &value);