2015-09-21 57 views
0

我目前正在開發AUTOSAR項目,因此生成的代碼基於特定的軟件,可能看起來有點奇怪。但是First.c文件是完整的C.我的問題是關於訪問存儲在C中的指針變量中的值。我有一個頭文件'header.h',它引用了一個函數,如下所示。這個頭文件進一步從另一個文件訪問一個單獨的函數。傳遞'''的參數1使得整形指針沒有轉換

header.h

static inline Std_ReturnType First_Element(uint32 *data){ 
     return First_Element_Read(data); 
} 

調用該函數在c文件 'First.c' 如下。

int x; 
int result; 
void Func_call(void){ 

     result = First_Element(x); 
     printf("The value in result is %d", &result); 

     return 0; 
} 

我只想從頭文件中的變量'data'中的值存入C文件中的x變量。當我這樣做時,我收到一條警告,說

從不兼容指針類型傳遞參數1'First_Element'。 並且沒有數據顯示。有人能夠在這裏指出我的錯誤嗎?

感謝提前一噸!

+1

就看你自己的代碼五秒鐘。 'int'不是'uint32_t *'。 – Lundin

回答

3

First_Element需要uint32 *類型的參數。

您可以使用類型爲int的參數來調用它。

這些不匹配,所以它不起作用。很難看到你期望在這裏發生什麼,所以我不能真正提出修復建議。


更新:修正後的代碼應該是:

uint32 x;           /* <--- note type */ 
Std_ReturnType result;        /* <--- note type */ 
void Func_call(void){ 

     result = First_Element(&x);     /* <--- added "&" */ 
     printf("The value in result is %d", result); 

     return 0; 
} 
+0

我期望在這裏發生的是,來自變量數據的值被存入C文件中的變量x中。感謝您的答覆! – Goldengirl

+0

啊,所以'First_element'應該寫回那個論點? – ams

+0

是的。這是正確的..) – Goldengirl

1

你應該通過正確的,正確的類型強制轉換值

result = First_Element((uint32 *) &x); 

也更好地重新考慮對x的聲明,作爲簽字int

int x; 

,也許你可能想從

printf("The value in result is %d", &result); 

以下改爲

printf("The value in result is %d", result); 
相關問題