掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
char*型変数のexternについて (ID:73041)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi char*型変数のexternについて 最近勉強しているプログラムで頓挫してしまったのでご教授いただきたく存じます。 現在、VisualStudio2008のc++、win32コンソールアプリケーションでDLLを作成 しています。 DLLの構成は、デフォルトで構成されるファイルとは別に2つのクラスA、Bを追加 しています。 例)①main.cppとmain.h、②a.cppとa.h、③b.cppとb.h a.cppには、「構造体の変数に値を入れる関数X」があり、a.cppで定義する構造 体の変数に値を格納します。 a.cppでは、「構造体BOXのポインタ」を定義しており、構造体にはint型の変数 idやchar*型の変数nameがあります。 ここで、main.cppやb.cppでも値を変更する必要があるため、main.cppの頭に --- extern struct BOX{        int id;        char* name; }; extern struct BOX *g_box; --- しかし、出力結果を確認したところ、 a.cpp内での出力(関数X内で値を格納した後)では、 int型:fprintf( file, "%d\n", g_box.id);⇒正解 char*型:fprintf( file, "%s\n", g_box.name); ⇒正解 main.cpp内での出力(関数Xを呼び出した後)では、 int型:fprintf( file, "%d\n", g_box.id);⇒正解 char*型:fprintf( file, "%s\n", g_box.name); ⇒不正解 となりました。 何が原因なのかよくわからなかったので、試しにint型とchar*型の変数を別に 作って同様に確認したところ、 ("extern int id"や"extern char* name"を追加しました) 結果も同様になり、int型の変数は"extern"できていて、char*型の変数はできて いませんでした。 ただ、char*の変数には何か値が入っているよう(NULLではない)です。 最終的にやり方が悪いのか、出力の仕方が悪いのかがわからなくなってしまいました。 どなたかご教授願えませんでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.