0

我有一个函数,它接受提到的大小作为参数,例如:

 sizeof(tcpstuct) * tcprules

让我们说

tcpstuct 是一个具有 INT32 类型成员的结构。( INT32 是 int 类型,由于平台依赖性,定义为 INT32 )

tcprules 是 NAT32 类型的变量。

如果函数接受另一种类型,请说 WORD32 。演员应该怎么走?

我尝试过的:

(WORD32 ) (sizeof(tcpstuct) * (INT32 )tcprules )
(WORD32 ) ((INT32 )(sizeof(tcpstuct) * (INT32 )tcprules ))

但是这两个都抛出了 seg fault !我需要投sizeof吗?

编辑:正如所有人都指出的那样,Seg 故障是由于其他地方的错误,感谢 gdb

4

2 回答 2

1

我在你的陈述中没有看到任何潜在的崩溃。段错误必须在其他地方。

于 2012-09-06T12:13:56.033 回答
1

如果sizeof(tcpstuct)是一个“东西”的大小,并且tcprules是“东西”的数量,那么应该不需要任何演员表。

C自动在不同的整数类型之间转换,所以无论你的表达式sizeof(tcpstuct) * tcprules有什么类型,都应该转换成WORD32(不管是什么,但假设它是一个整数类型)。

您的代码中的错误很可能在其他地方,并且此表达式不太可能导致您发布的任何版本中的段错误。也许段错误在您调用的函数中。

于 2012-09-06T11:03:51.720 回答