我有一個網絡接口的索引,我從中得到一個數據包(即2),並且需要找到接口的名稱,它應該返回"eth0"
。我正在使用if_indextoname()
。無法將'char **'轉換爲'char *'
我沒有太多熟悉C++在Ubuntu,但我的代碼刪除一個錯誤:
cannot convert
char**
tochar*
for argument 2 tochar* if_indextoname(unsigned int, char*)
有人可以幫我解決?
#include <net/if.h>
#include <iostream>
int main()
{
unsigned int ifindex = 2;
char *ifname[10];
std::cout << if_indextoname(ifindex, ifname);
std::cout << ifname << std::endl;
}
你傳遞'字符*'的東西數組期望一個'字符*'。也許你的意思是'char ifname [IF_NAMESIZE];'(或者更大的尺寸,或者在C++ 11中使用這個尺寸的'std :: string'的緩衝區)。 – chris
它與Linux或Ubuntu無關。它只是C++。一個'char *'數組不能衰減到'char *'。 – juanchopanza
謝謝克里斯;固定! –