-3
void test(void *a)
{
int *h = a; //error
}
int main(int argc, char const* argv[])
{
int z = 13;
test(&z);
return 0;
}
如果我想保留void * a作爲測試函數,我該如何獲得錯誤行工作?在C中傳遞int引用?
void test(void *a)
{
int *h = a; //error
}
int main(int argc, char const* argv[])
{
int z = 13;
test(&z);
return 0;
}
如果我想保留void * a作爲測試函數,我該如何獲得錯誤行工作?在C中傳遞int引用?
我能夠編譯和gcc
運行下面沒有任何警告或錯誤:
#include <stdio.h>
void test(void *a)
{
int *h = a;
printf("test: %d\n", *h);
}
int main(int argc, char const* argv[])
{
int z = 13;
test(&z);
return 0;
}
你會得到你的指示線的錯誤
唯一可能的原因是,您使用的是C++編譯器(g++
也許?)。如果我嘗試,我得到以下錯誤:
error: invalid conversion from ‘void*’ to ‘int*’
如果您需要使用C++編譯器,你需要顯式轉換a
到int *
:
int *h = (int *) a;
這一個變化讓這個代碼編輯g++
以及。
與MSVC相同 - 添加行解引用'* h'不會產生警告或錯誤。 –
這是完全有效的C代碼。我的猜測是你正在使用C++編譯器,在這種情況下,你需要在你的'test'函數中明確地將'a'轉換爲'int *'。 –
什麼是錯誤,我得到的是一個*未使用變量'h'的警告(使用'-Wall')* – cdarke