teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

追記修正

2018/10/15 00:14

投稿

FujimuraAkira
FujimuraAkira

スコア7

title CHANGED
File without changes
body CHANGED
@@ -41,13 +41,7 @@
41
41
 
42
42
  よろしくお願いします。
43
43
 
44
- ---
45
- 2018/10/15 追記
46
44
 
47
- 回答ありがとうございました。
48
- 原因は分かりませんでしたが、解答に有ったようにgetter関数を用意して回避しようと思います。
49
- 本日をもって回答を締め切らせていただきます。
50
-
51
45
  ### 発生している問題・エラーメッセージ
52
46
 
53
47
  ```
@@ -135,4 +129,14 @@
135
129
 
136
130
  ### 試したこと
137
131
 
138
- dev_mutex[0]の様に定数に変更した場合エラーメッセージが消えました。
132
+ dev_mutex[0]の様に定数に変更した場合エラーメッセージが消えました。
133
+
134
+ ---
135
+ 2018/10/15 追記
136
+
137
+ 回答ありがとうございました。
138
+ 大変参考になりました。
139
+
140
+ 具体的な原因は分かりませんでしたが、yumetodoさんの解答に有ったようにgetter関数を用意して回避しようと思います。
141
+ (回避策を提案頂いたのでベストアンサーとさせていただきます。)
142
+ 本日をもって回答を締め切らせていただきます。

3

追記

2018/10/15 00:14

投稿

FujimuraAkira
FujimuraAkira

スコア7

title CHANGED
File without changes
body CHANGED
@@ -41,6 +41,13 @@
41
41
 
42
42
  よろしくお願いします。
43
43
 
44
+ ---
45
+ 2018/10/15 追記
46
+
47
+ 回答ありがとうございました。
48
+ 原因は分かりませんでしたが、解答に有ったようにgetter関数を用意して回避しようと思います。
49
+ 本日をもって回答を締め切らせていただきます。
50
+
44
51
  ### 発生している問題・エラーメッセージ
45
52
 
46
53
  ```

2

dev_mutex 宣言/定義文 追記

2018/10/15 00:03

投稿

FujimuraAkira
FujimuraAkira

スコア7

title CHANGED
File without changes
body CHANGED
@@ -14,6 +14,23 @@
14
14
  pthread_mutex_unlock(&dev_mutex[ch]); // mutex unlock
15
15
 
16
16
 
17
+ なお、dev_mutexは別ファイルにグローバル宣言しており、
18
+ 本ファイル(掲載コードのファイル)の先頭でexternして使用しています。
19
+
20
+ main.c(仮称)
21
+ ```
22
+ // Global
23
+ pthread_mutex_t dev_mutex[3];
24
+
25
+ ```
26
+
27
+ i2c_common.c(掲載コードのファイル)
28
+ ```
29
+ extern pthread_mutex_t dev_mutex[3]; // デバイスアクセス用mutex 0~2 I2Cバス
30
+
31
+ ```
32
+
33
+ コード
17
34
  質問1
18
35
  添字を定数に変えたらエラーは消えるのですが、納得いかないです。
19
36
  この時点でなぜ実体が存在しないのでしょうか?

1

エラー発生点に関する情報追加

2018/10/12 06:21

投稿

FujimuraAkira
FujimuraAkira

スコア7

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,12 @@
8
8
  mutex本体はi2cバスごとにlock/unlock出来るように配列になっているのですが
9
9
  配列のアクセスに引数のchを使用した時、実体がないと怒られました。
10
10
 
11
+
12
+ if(pthread_mutex_lock(&dev_mutex[ch]) == 0){
13
+
14
+ pthread_mutex_unlock(&dev_mutex[ch]); // mutex unlock
15
+
16
+
11
17
  質問1
12
18
  添字を定数に変えたらエラーは消えるのですが、納得いかないです。
13
19
  この時点でなぜ実体が存在しないのでしょうか?
@@ -22,6 +28,8 @@
22
28
 
23
29
  ```
24
30
  i2c_common.c:113: `dev_mutex' に対する定義されていない参照です
31
+
32
+ (同様に参照している箇所にも同じエラーが出ます)
25
33
  ```
26
34
 
27
35
  ### 該当のソースコード