2017-02-21 6 views
0

私はAtmelスタジオのArduinoプロジェクトで作業しています。宣言し、初期化し、コードのあるセクション(settings.cpp/settings.h)でintを使用し、別の.cppファイル(error.cpp)で使用する必要があります。私はこれを行う最善の方法が何であるか疑問に思っていた。複数のCppファイルで変数を使用する

私の計画は、settings.hのextern intとしてintを宣言し、それをsettings.cppで初期化し、error.cppの#include settings.hにしました。

これは、これを行うための最善の方法への最善の方法であるか

感謝をsettings.hするerror.cppのアクセスを与えるとき、私は何かを検討する必要がない場合、私はただ思ったんだけど。 .h(ヘッダ)ファイルで

答えて

1

もう1つの方法は、settings.hでprivateを定義し、settings.cppで初期化することです。

次に、settings.hでパブリック関数として宣言し、settings.cppに実装するint getVar()void setVar(int)を使用できます。

エラークラスから、settings.hを含めて、これらの関数を呼び出すことができます。このアプローチはより効果的ですが、変数で何が起こるかをより詳細に制御できるので、より安全になる傾向があります。

+0

こんにちは博士、私は実際には元々このようにしましたが、私のerror.cppにsettings.hを含めて関数にアクセスする必要があります。私の本当の疑問は、settings.hをerror.cppに含めることに悪影響があるかどうかです。とにかくそれを使用せずに行う場合は – user1649972

+0

error.cppにsettings.hを含めることによる副作用はないはずです。なぜあなたはインクルードなしでそれをやりたいのですか? – DrDonut

+0

私はなぜか分かりませんが、私は私の頭の中に完全に必要なときだけアクセスを許可し、可能な限りアクセスを制限する必要があるということを私は持っていました。私は最近、クラスと継承でたくさんのことをしていて、アクセスを制限しようとしている私のワイヤーが交差していると思っています。答えをありがとう、私は先に行くと自信を持ってインクルージョンを使用する:) – user1649972

1

定義:

extern int myvar; 

、グローバルスコープにどこにでもそれを使用します。

+0

こんにちはQuantum、私は実際にはerror.cpp内の関数内で使用する必要があります。 #include settings.hを実行しないと、intが "このスコープで宣言されていません"というエラーが表示されます。settings.hをインクルードしても問題ないのですか? – user1649972

+0

そこに 'settings.h'を含めないのはなぜですか?エラーが設定に依存する場合は、その周囲には何もありません。 –

+0

なぜか分かりませんが、完全に必要なときだけアクセスを許可し、可能な限りアクセスを制限する必要があるということは私の頭の中にありました。私は最近、クラスと継承でたくさんのことをしていて、アクセスを制限しようとしている私のワイヤーが交差していると思っています。おかげです答えquantun – user1649972

関連する問題