(void)strcpy(somevariable1,somevariable2)是否正确?

时间:2017-06-23 12:56:14

标签: c function syntax

我正在学习编程。我想知道上述用法是否正确。这是对的吗?

(void)strcpy(somevariable1, somevariable2);

这与类型转换有关吗?

4 个答案:

答案 0 :(得分:2)

strcpy具有以下语法:

char * strcpy ( char * destination, const char * source );

并返回destination pointer to char。当您将返回值显式转换为(void)时,您实际上正在执行

(void)(char*)

您将返回值转换为空,或者您只是删除它。这有助于抑制某些编译器警告,尤其是在您不使用返回值时。

答案 1 :(得分:1)

是的,这是正确的,但你真的没有在这里施展任何东西。您只是明确地告诉编译器您要删除strcpy()的返回值,并且它不应该警告您不检查返回值(因为这通常是一个好主意)。

答案 2 :(得分:1)

是一个类型转换,但是不需要的。 void是一种不完整的类型,用于建模 nothing (或作为指向void的指针,通用数据)。

将函数的返回值强制转换为void的原因只是文档:它使显式不会使用返回值。如果遗漏演员,编译器的某些激进警告设置可能会发出有关未使用返回值的警告。

答案 3 :(得分:0)

此表达式有效。

使用(void)转换表达式是一种明确声明表达式语句的值(例如函数调用的结果)将被丢弃的方法。

C standard的第6.8.3节中有一个例子:

  

4 示例1如果函数调用仅作为其副作用的表达式语句进行求值,则丢弃其值可能   通过将表达式转换为void表达式来使其显式化   演员的手段:

int p(int);
/* ... */
(void)p(0);