奇怪的指针投射与空*

Fre*_*uss 4 c casting void-pointers

我们正在开发有关嵌入式Linux与C和C++的项目.我最近在函数中遇到了一个奇怪的语句:

bool StrangeFunction(void* arg1, void* arg2, void* arg3)
{
    (void)arg1;
    (void)arg2;
    (void)arg3;

    unsigned long keycode = (unsigned long)arg2;

    switch(keycode)
    {
...
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中有两个问题

  1. 这是什么意思(void)arg1;
  2. 是否可以使用 unsigned long keycode = (unsigned long)arg2;

如果您不介意,我需要一些解释和相关链接来解释主题.谢谢.

und*_*gor 10

  1. 它是使有关未使用参数的编译器警告静音.

  2. 这是可能的但不便携.如果在给定的平台上有一个地址适合unsigned long,那就没关系.uintptr_t在可用的平台上使用,以使此代码可移植.