Я пробую свои силы в C, и я подумал, что было бы разумно написать следующие макросы:
// takes address of a variable and passes it on as a void*
#define vp_pack(v) ((void*)&x)
// takes a void pointer and dereferences it to t
#define vp_upack(v,t) (*((t*)v))
И я проверяю это так:
int
main()
{
int five = 5;
char a = 'a';
vp ptr;
// Test 1
ptr = vp_pack(five);
if(vp_unpack(ptr,int) == five)
printf("Test 1 passed\n");
else
fprintf(stderr, "Test 1: all is doomed\n");
// Test 2
ptr = vp_pack(a);
if(vp_unpack(ptr,char) == a)
printf("Test 2 passed\n");
else
fprintf(stderr, "Test 2: all is doomed!\n");
}
Но gcc
извергает такие непристойности как error: expected expression before 'int'
на меня.
Я потратил на это целый день и до сих пор не могу понять, что не так с кодом. Может ли кто-нибудь объяснить мне это?
Кроме того, я не программист по профессии. Я даже не работаю в сфере ИТ, но это мое хобби. Так что, если кто-нибудь скажет мне лучший способ сделать это, пожалуйста, сделайте это.
Спасибо!