回答編集履歴

3

ミス修正

2020/07/02 03:12

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -26,4 +26,6 @@
26
26
 
27
27
  > そこでstructメンバの値を返すルーチンを共通化したいわけです。
28
28
 
29
+
30
+
29
31
  その共通化ルーチン内でswitch-caseするしかないだろうと思います。

2

追記

2020/07/02 03:12

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -9,3 +9,21 @@
9
9
  C++は、それのような要求に対するサポートがあります。関数のオーバーロードと呼ばれています。
10
10
 
11
11
  ただし、暗黙の型変換による落とし穴もあるので使い方は要注意です。特に整数型同士での呼び分けは[意外に深い落とし穴が開いています](https://dev.activebasic.com/egtra/2016/12/23/939/)。
12
+
13
+
14
+
15
+ -----------
16
+
17
+ 【追記】
18
+
19
+ 「質問への追記・修正」依頼欄を見落としていました。
20
+
21
+ uint32_t型で全て返すことが目的なのですね。1, 2, 3的な番号(メンバ変数ID?)を指定して、該当のメンバの値を返したいと。
22
+
23
+ 番号→メンバ変数変換が必要になりますので、switch-caseを使わざる得ないと思います。(番号が定数なら他にも考えられますが、定数でよいなら変数名でも良いはずなので意味はないです。)
24
+
25
+
26
+
27
+ > そこでstructメンバの値を返すルーチンを共通化したいわけです。
28
+
29
+ その共通化ルーチン内でswitch-caseするしかないだろうと思います。

1

微修正

2020/07/02 03:12

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- C言語の場合は、hoge_para_uint32(), hoge_para_uint8(), hoge_para_uint16()的な関数を意して呼び分けるのが一般的と思います。
5
+ C言語の場合は、hoge_para_uint32(), hoge_para_uint8(), hoge_para_uint16()的な関数を意して注意深く呼び分けるのが一般的と思います。(暗黙の型変換に要注意)
6
6
 
7
7
 
8
8