Hej
Czy jest jakiś sposób by pozbyć się dwóch poniżej warningów gdy nie mamy możliwości zmiany typu argumentów funkcji? Rzecz dotyczy języka C, więc reinterpret_cast odpada.
#include <stdio.h>
#include <stdlib.h>
void funkcja(int arg)
{
const char* x = (const char*)arg;
printf("x=%s\n", x);
}
static void handle(void *cmd)
{
funkcja((int)cmd);
}
int main()
{
const char* x = "blablafgh";
handle((void *)x);
return 0;
}
warningi:
main.c:14:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
main.c:20:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
To powyżej to uproszczenie.
Programując kernel moduł na interfejsie w callbacku we frameworku mam typ int a muszę przekazać tam const char*. Szkoda, że nie dali void gwiazdka.
int
ma mniejszy rozmiar niżconst char*
. Zapewnesizeof(int)==4
, asizeof(const char*) == 8
.