- ベストアンサー
同じ名前の外部変数定義
C言語で、何個かのファイルに同じ型、同じ名前のstatic型の外部変数定義があっても大丈夫ですか? static型でなかったら駄目だと思うのですが、static型ならいい気もしてきて悩んでます。宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 複数ファイルによる共通の外部変数定義について
初歩的な質問なのですが、今各関数をファイルごとに分けて記述しようとしています。 ここで詰まっているのでできればご教授お願いします ファイル構成は プログラムファイル main.cpp sub.cpp ヘッダーファイル myheader.h(main.cppとsub.cpp両方でインクルード) ヘッダーファイルには両方のプログラムファイルで使う変数が定義してあります。 それでmain.cppとsub.cpp両方で同じ変数を使いたいのですがコンパイルエラーが発生してしまいます。 内容はsub.obj側で「i(共通のループカウンタ)はmain.objですでに定義されています」というものです。 とにかく私のやりたいことはヘッダーに外部変数を定義して両方のプログラムファイルで使いたいというものです。 もしかしたらファイルを分けるにも何か設定が必要なのでしょうか? 私はただ[プロジェクト]→[プロジェクトに追加]→[新規作成]でソースファイルを作っているだけなんですが・・・ 上記の状態を回避する方法はあるのでしょうか?
- 締切済み
- C・C++・C#
- 分割ファイルでstatic変数はどのようにすれば良いのでしょうか?
1つのファイルでstatic変数を使っている場合は気にしていなかったのですが、分割ファイルにした場合、static変数はどのようにすれば各ファイルで利用できるのでしょうか? 通常のグローバル変数の場合はexternとすれば良かったのですが方法がかわりません。 ** test1.cpp static int a; ** test2.cpp ?????? (二重定義になる) あと1ファイルから分割ファイルにした場合に気をつけるべき点など詳しい方教えて下さい。
- ベストアンサー
- C・C++・C#
- エクセルで外部データの取り込みの際の「名前の定義」について。
エクセルで外部データの取り込みの際の「名前の定義」について。 エクセルのテキストファイルウィザードでCSVファイル等の外部データを取り込むと、その範囲に「名前の定義」が自動的にできますが、この名前が"ExternalData_1"となる場合と、外部データのファイルになる場合があるようです。 この違いは何でしょうか? 数日前にエクセル2003でCSVファイルを取り込んだときは"ExternalData_1"でした。 昨日エクセル2000で別のCSVファイルでやってみても"ExternalData_1"だったと思います。 しかし、今日、数日前と同じ2003で、数日前と同じCSVファイルで取り込んだら、"CSV10000"というファイル名で名前が定義されてしまいました。 非常に不思議です。 原因を思い当たる方、いらっしゃいましたらご教示ください。 取り込み範囲の名前の定義を、取り込み後のVBAコードで使用するため、名前がつき方が不定だとまずいのです。
- ベストアンサー
- その他MS Office製品
- c言語で定義する変数のアドレス
c言語の超初心者です。追いえてください。 c言語で2つの変数を定義しています。 char *a; char *b; この2つの変数に値をいれた際の動作で以下のようなことって発生しますか? a="1111" b="2222" aをprintfするとbにいれた値"2222"が表示される。
- 締切済み
- C・C++・C#
- 識別子の外部結合について
識別子について調べていてわからないことがあり 質問させて頂きます。 以下のコードの場合変数aは外部結合ですか それとも外部結合以外となるのでしょうか。 識別子の宣言に対し同一ソースファイル内の関数内で その識別子の定義がある場合、その識別子は外部結合か どうかが知りたいのです。 ご存じの方すいませんがよろしくお願いします。 --test.c-- static int a; main() { ・・・ } function1() { a = 1; ・・・ } function2() { a = 1; ・・・ }
- ベストアンサー
- C・C++・C#
- ユーザー定義型変数の一括初期化
ユーザー定義型の変数を初期化する場合、 各エレメントごとに初期化をすればいいのですが、 C言語のmemset()の様に、一括で初期化をする方法はありますか?
- ベストアンサー
- Visual Basic
- 変数の型を定義しなかった場合どうなりますか?
現在、VBAを使ってプログラミングを行っているところなのですが、 一般的に、プログラムの最初で変数に対してintegerやlongといった型を定義してから使うというように教わりますが、このように型を定義しなくとも使うことが出来ます。もし定義しなかった場合、その変数の型は何に設定されているのでしょうか? では型を定義するメリット及び、せずに使った場合のデメリットは何なのでしょうか? 私が使っているのはVBAですが、他の言語では型を定義しなければ、その変数を使うことが出来ないというようなものもあるのでしょうか?
- ベストアンサー
- Visual Basic
- DLL内からの外部変数の参照
BCC(フリーコンパイラ)で、WindowsAPIを使った プログラムを作成しています。その過程で、DLLを 作成しているのですが、 test.c を、 bcc32 -WD test.c とし、test.dllを作成しました。 さらにそれを、 implib test.lib test.dll で、test.libを作成ました。 ところが、おなじtest.cファイルで、ほかのファイル の変数を参照しようとして、extern HWND hWnd と書き加えたところ、bcc32 -WD で、参照先が見つか らないというエラーが起こり、DLLが作成できなく なってしまいました。 DLL内から外部の変数を参照するにはどうしたらよいで しょうか。この場合の外部の変数というのは、WinMain 関数のあるmain.cファイル内の静的変数です。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- Static変数の必然性について
今晩は、Cの初心者です、宜しくお願いします。 Global変数とStatic変数の違いがよく分かりせん。 本を読むと、Global変数は「常に同じメモリ上に置かれどの関数からも使用できる」、Static変数は「常に同じ メモリ上に置かれ定義された関数からのみ使用できる」とかいています。 Global変数がどのようなもので、その必要性みたいなものは理解出来るのですが、Static変数については、 Global変数との違い、その必要性、実際にどのような場合に使うのかその必然性みたいものがあるのか理解できません。 いくら本を読んでも、理解出来ないのですが、宜しくご教示願います。
- ベストアンサー
- C・C++・C#
- 文字列のメンバ変数を外部変数のように扱いたい
済みません。質問なのですが、 メンバ変数を外部変数のように扱うにはどうしたらよいのでしょうか? int型などの場合、 class test{ static const int a; }; const int test::a = 10; とすればよいですよね? これをcharの配列にして class test{ static char a[7][32]; }; char test::a[0] = "test"; とすると サイズが0の配列を割り当てまたは宣言しようとしました というコンパイルエラーがでてしまいます…。 多次元配列の場合はstatic変数としてもてないのでしょうか? char** として宣言してもどこでnewを行えばよいか解りません。 コンストラクタの中で行えば そこでstaticではなくなってしまいますし…。 後、できればstringクラスの配列で持ちたいのですが #include <string> class test{ static string test[7]; }; string test::test[0] = "aaa"; なんてことができますでしょうか? 質問内容が解りにくいかも知れませんが どうか教えてください。 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
お礼
ありがとうございます。これで安心しました。