C无效指针问题

jra*_*rez 5 c pointers

我在C(嵌入式编程)中有grep函数,它将void指针作为参数.该函数需要能够处理不同类型的变量,如字符整数和长整数.我如何编写函数代码,以便它可以自己弄清楚我传递的变量类型?我不知道这是否可行.谢谢

即.


void grep( void *t ) 
{ 
   if( t == char ) 
   { 
      do this 
   } 
   if( t == int ) 
   { 
      do that  
   }  
   ... 
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ins 14

任何准确性都无法做到.例如,4字节整数可以很容易地解释为字符串.例如,空终止字符串"ABC"将与整数值1094861568相同(取决于字节顺序).

  • 如果这回答了您的问题,请单击复选标记. (3认同)

Vla*_*lad 6

Void指针只包含存储器中存储数据的位置.您无法从中推断出任何类型信息.但你可以做的是,将两个参数传递给你的函数,一个用于类型,另一个用于指针.

如果可以使用C++,则可以创建一组重载的辅助函数来提供类型信息.


341*_*008 5

这在C中是不可能的.您必须明确指出参数的预期类型.您将必须传递第二个参数或传递具有类型信息作为参数的union或struct.