構造体の引数の戻り値 – プログラミング – Home

通知
すべてクリア

[解決済] 構造体の引数の戻り値


ゴン太
 ゴン太
(@ゴン太)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

構造体のメンバ変数に値をセットする方法を教えて下さい。
以下のメインファイルと、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;
}


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

int TestProg(TESTHENSU *tesInf)
{
tesInf->hensu1 = 5;
tesInf->hensu2 = 8;

return true;
}


返信引用
ゴン太
 ゴン太
(@ゴン太)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

Bunさん、ありがとうございました。
ポインタの(*)(&)(.)(->)の意味が頭の中で混乱しています。
(勉強が足りません・・・。)
おかげ様で、解決しました。

 


返信引用
ゴン太
 ゴン太
(@ゴン太)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

すいません、まだ未解決でした。
メイン側で以下のコンパイルエラーが発生してしまいます。
エラー箇所:ret = TestProg(&tesInf);
エラー内容:struct tagHENSU * から struct tagHENSU に変換できません。
      コンストラクタはソース型を持てません、または、コンストラクタのオーバーロードレゾリューションがあいまいです。

度々、申し訳ありませんが、宜しくお願いします。
 


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

TestProg関数のプロトタイプ宣言はどう記述していますか?

なんでコンストラクタが出てくるのかよーわかりまへんが(^^;


返信引用
ゴン太
 ゴン太
(@ゴン太)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

Bunさん、色々とありがとうござうます。
調べたら、おっしゃる通り、TestProg関数のプロトタイプ宣言(DLL)が
うまくいっていないようです。
以下の宣言をしているのですが、ポインタの場合の宣言方法がわかりません。

bool PASCAL testProg( TESTHENSU );

(*),(&)等をTESTHENSUに色々つけてみたのですが、全てコンパイルエラーに
なってしまいます。 度々、宜しくお願い致します。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

bool PASCAL testProg(TESTHENSU *);

ではダメですか?


返信引用
ゴン太
 ゴン太
(@ゴン太)
ゲスト
結合: 23年前
投稿: 14
Topic starter  

Bunさん、ありがとうございます。
その後、色々確認した結果、宣言の記述方法に問題がありました。
基本的に、bool PASCAL testProg(TESTHENSU *); でOKでした。
助かりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました