問題タブ [include-guards]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++: 簡単な追加の例でヘッダー ファイルとヘッダー ガードを理解する
ヘッダーとヘッダー ガードについて理解できません。他の質問とその回答を読みましたが、Visual Studio 2013 でこれを機能させることはできません:
main.cpp
add.cpp
add.h
コンパイルすると、コンソール ウィンドウが画面上で点滅してから消えます。エラー リストには次のものが含まれます。
エラー 1 エラー LNK2019: 未解決の外部シンボル "int __cdecl add(int,int)" (?add@@YAHHH@Z) が関数 _wmain で参照されています c:\Users\Danny\documents\visual studio 2013\Projects\Addition Program\main \main.obj メイン
エラー 2 エラー LNK1120: 1 未解決の外部 c:\users\danny\documents\visual studio 2013\Projects\Addition Program\Debug\main.exe メイン
1. ヘッダーとヘッダー ガードはどのように機能しますか? #include によっての宣言を認識するadd.h
方法がわかりますが、その定義をどのように見つけるのでしょうか?main.cpp
add(int x, int y)
2. コードのどこが間違っていますか?
私のコードは現在コンパイル中です。コードがコンパイルされなかった理由は、Visual Studioのソリューション エクスプローラーの [ソースファイル]セクションと[ヘッダー ファイル]セクションからファイルを追加するのではなく、[ファイル] > [新規] > [ファイル... ] に移動してプロジェクトにファイルを追加していたためです。add.cpp ファイルにも追加する必要がありました。#include "stdafx.h
c++ - コード内の #includes と冗長性を配置する場所 (ヘッダーと実装ファイル)
現在、Accelerated C++ を使用していますが、#include をどこに配置する必要があるか (ヘッダーやソース ファイルのいずれか) を理解するのに少し苦労しています。
何を変更する必要があり、何を変更する必要がないかについて、すべてのコメントをいただければ幸いです。ライブラリを複数回インクルードしているように感じます (たとえば、メイン プログラムに #include がある場合、他のヘッダー/ソース ファイルに含める必要がありますか?)。また、使用する場合
Student_info.cpp ファイルには grade.h が含まれていますが、main.cpp に grade.h を含める必要がありますか? それともこれで十分ですか? このコードを投稿したのは、特定の例に適用することが、これらのファイルを整理する適切な方法と、注意すべきよくある間違いを頭の中でドリルダウンするための最良の方法だと思うからです。
ファイルのリスト - 完全を期すためにコード全体を含めていますが、重要なのは上位の部分と原則だけです
main.cpp
グレード.h
グレード.cpp
分析.h
分析.cpp
中央値.h
中央値.cpp
Student_info.h
Student_info.cpp
c++ - 問題を含めてガードを含める
私のチームと私は、それぞれのヘッダー ファイルとソース ファイルを持つ多くのクラスを持つかなり大規模なプロジェクトに取り組んでいます。C++ ライブラリとプロジェクト クラス ヘッダー ファイルの両方からのすべてのインクルードを、すべてのヘッダー ファイルに含まれる「Includes.h」という 1 つのファイルに統合しようとしています。これを行っているときに遭遇した問題の 1 つは、クラス ヘッダー ファイルが基本的にそれ自体をインクルードしていることです。#pragma once
すべてのヘッダー ファイルの先頭にインクルードしました。#include "Controller.h"
「#Includes.h」ファイルをコメントアウトすると、 「Controller.h」のエラーはなくなります。
c++ - c++ テンプレートとインクルード ガード
私は C++ に比較的慣れていないので、私の質問には簡単な答えがあるかもしれません。ただし、コードが機能すると思っていたのになぜ機能しないのかわかりません。サンプルコードは以下の通りです。
テンプレートを含めるときにエラーを回避する方法について、オンラインで情報を読んでいます。その 1 つは、私がここで達成しようとしていること#include "a.cpp"
ですa.h
。ただし、私が調べたサンプルでは、サンプル コードに示されているをまだ使用#include "a.h"
しています。a.cpp
ただし、function template has already been defined
エラーが発生しています。a.cppで を使用して#ifdef A
コメントアウト#include "a.h"
すると、この再定義エラーを取り除くのに役立つことがわかりました。しかし、私は何が起こっているのかを理解したいと思っています。のインクルードガードによって再定義がすでに処理されているはずではありませんa.h
か?