传递参数1''使得整数指针没有强制转换

时间:2015-09-21 08:34:07

标签: c pointers header-files

我目前正在开发一个AUTOSAR项目,因此生成的代码基于该特定软件,可能看起来有些奇怪。但是文件First.c是完整的C.我的问题是关于访问存储在C中的指针变量中的值。

我有一个头文件'header.h',它反映了一个函数,看起来如下所示。这个头文件进一步从另一个文件访问一个单独的函数。

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变量。当我这样做的时候,我会收到警告

从不兼容的指针类型传递'First_Element'的参数1。 并且不显示任何数据。有人可以在这里指出我的错误。

提前感谢!

2 个答案:

答案 0 :(得分: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;
 }

答案 1 :(得分:1)

你应该传递正确的,正确的类型值

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

最好再考虑将x声明为signed int

int x;

可能您可能想要从

更改以下内容
 printf("The value in result is %d", &result); 

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