Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以定义一个函数来修改C中的参数?_C_Typedef - Fatal编程技术网

有没有一种方法可以定义一个函数来修改C中的参数?

有没有一种方法可以定义一个函数来修改C中的参数?,c,typedef,C,Typedef,我有一些代码需要为windows和linux调用sleep 为了避免在任何有睡眠的地方放置ifdef,我做了以下操作 typedef Sleep sleep 问题是windows只需几微秒就可以进入睡眠状态,而linux只需几秒钟就可以进入睡眠状态。是否有一种方法可以执行类似于此伪代码的操作 typedef Sleep(x) sleep(x/1000) 否。typedef为类型定义新名称 如果您想避免到处使用ifdef,可以创建一个包装函数,以毫秒为参数,然后在内部使用ifdef以及从毫秒到

我有一些代码需要为windows和linux调用sleep

为了避免在任何有睡眠的地方放置ifdef,我做了以下操作

typedef Sleep sleep
问题是windows只需几微秒就可以进入睡眠状态,而linux只需几秒钟就可以进入睡眠状态。是否有一种方法可以执行类似于此伪代码的操作

typedef Sleep(x) sleep(x/1000)
否。typedef为类型定义新名称

如果您想避免到处使用ifdef,可以创建一个包装函数,以毫秒为参数,然后在内部使用ifdef以及从毫秒到秒的任何必要转换。

否。typedef为类型定义了一个新名称


如果您想避免到处使用ifdef,可以创建一个以毫秒为参数的包装函数,然后在内部创建一个ifdef以及从毫秒到秒的任何必要转换。

否,您不能为此使用typedef

但是,您可以编写以下宏:


现在,在您的代码中,您可以简单地调用MY_SLEEP_MACRO 5000;要在两种平台上等待5秒钟。

否,您不能为此目的使用typedef

但是,您可以编写以下宏:


现在,在您的代码中,您可以简单地调用MY_SLEEP_MACRO 5000;在两种平台上等待5秒。

typedef只是给类型起一个短名称,它不会改变数据。您可能需要一个宏。typedef只是给类型起一个短名称,它不会改变数据。您可能需要一个宏。实际上,名称不正确;typedef不定义新类型。它为类型定义了一个新名称。给定typedef任何foo;typedef Anything bar;,foo和bar将是完全相同的类型。相反,对于struct foo{Anything x;}和struct bar{Anything x;},struct foo和struct bar是不同的类型,并且不兼容;typedef不定义新类型。它为类型定义了一个新名称。给定typedef任何foo;typedef Anything bar;,foo和bar将是完全相同的类型。相反,对于struct foo{Anything x;}和struct bar{Anything x;},struct foo和struct bar是不同的类型,并且不兼容。
#if defined( _WIN32 ) || defined( _WIN64 )
#define MY_SLEEP_MACRO( x ) Sleep(x)
#else
#define MY_SLEEP_MACRO( x ) sleep((x)/1000)
#endif