pozbycie się warningów w C

0

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.

2

Po prostu nie rób konwersji miedzy typem całkowitym a wskaźnikiem. Da się, ale jest to wprowadzania zamieszania i potencjalne źródło błędów.
A jak już z jakiegoś dziwnego powodu musisz to użyj: intptr_t lub uintptr_t jako typ całkowity.

1 użytkowników online, w tym zalogowanych: 0, gości: 1