構造体のメンバ変数に値をセットする方法を教えて下さい。
以下のメインファイルと、DLLファイルの2種類のコードファイルを作成し、
DLLファイル側のTestProg()内で、構造体に値をセットし、main()に返そうと
考えているのですが、コンパイルエラーになってしまいます。
エラー場所:tesInf.hensu1 = 5;
エラー内容:左側が、構造体、共用体ではありません。
C言語のポインタの基本的な質問で申し訳けありませんが、宜しくお願いします。
/*------------------- メインファイル側 ------------------------*/
// 変数構造体宣言
typedef struct tagHENSUU{
DWORD hensu1;
DWORD Hensu2;
}TESTHENSU;
//呼び出しメインプログラム
void main()
{
TESTHENSU tesInf
ret = TestProg(&tesInf);
}
/*------------------- DLLファイル側 ------------------------*/
// 変数構造体宣言
typedef struct tagHENSUU{
DWORD hensu1;
DWORD Hensu2;
}TESTHENSU;
int TestProg(TESTHENSU *tesInf)
{
*tesInf.hensu1 = 5;
*tesInf.hensu2 = 8;
return true;
}
int TestProg(TESTHENSU *tesInf)
{
tesInf->hensu1 = 5;
tesInf->hensu2 = 8;
return true;
}
Bunさん、ありがとうございました。
ポインタの(*)(&)(.)(->)の意味が頭の中で混乱しています。
(勉強が足りません・・・。)
おかげ様で、解決しました。
すいません、まだ未解決でした。
メイン側で以下のコンパイルエラーが発生してしまいます。
エラー箇所:ret = TestProg(&tesInf);
エラー内容:struct tagHENSU * から struct tagHENSU に変換できません。
コンストラクタはソース型を持てません、または、コンストラクタのオーバーロードレゾリューションがあいまいです。
度々、申し訳ありませんが、宜しくお願いします。
TestProg関数のプロトタイプ宣言はどう記述していますか?
なんでコンストラクタが出てくるのかよーわかりまへんが(^^;
Bunさん、色々とありがとうござうます。
調べたら、おっしゃる通り、TestProg関数のプロトタイプ宣言(DLL)が
うまくいっていないようです。
以下の宣言をしているのですが、ポインタの場合の宣言方法がわかりません。
bool PASCAL testProg( TESTHENSU );
(*),(&)等をTESTHENSUに色々つけてみたのですが、全てコンパイルエラーに
なってしまいます。 度々、宜しくお願い致します。
bool PASCAL testProg(TESTHENSU *);
ではダメですか?
Bunさん、ありがとうございます。
その後、色々確認した結果、宣言の記述方法に問題がありました。
基本的に、bool PASCAL testProg(TESTHENSU *); でOKでした。
助かりました。