complicated_producer_consumer.c:90:59: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] ret =pthread_create(&producer_id[i], NULL, producer_fun,(void*)i);
时间: 2024-02-11 10:09:43 浏览: 19
这个警告是因为在代码中将整数类型的变量 `i` 转换为指针类型 `void*`。在不同的平台或编译器下,整数类型和指针类型的大小可能不同,因此这种转换可能会出现问题。
要消除这个警告,可以将 `i` 转换为 `intptr_t` 类型,这是一个整数类型,足够大以容纳指针类型。然后再将 `intptr_t` 类型转换为 `void*` 类型。示例代码如下:
```
ret = pthread_create(&producer_id[i], NULL, producer_fun, (void*)(intptr_t)i);
```
这样就可以避免这个警告了。
相关问题
complicated_producer_consumer.c:34:30: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] printf("û%dȡɹ\n",(int)arg);
这个警告是因为在代码中将指针类型 `arg` 转换为整数类型 `int`。在不同的平台或编译器下,指针类型和整数类型的大小可能不同,因此这种转换可能会出现问题。
要消除这个警告,可以将指针类型 `arg` 转换为 `intptr_t` 类型,这是一个整数类型,足够大以容纳指针类型。然后再将 `intptr_t` 类型转换为 `int` 类型。示例代码如下:
```
printf("û%dȡɹ\n", (int)(intptr_t)arg);
```
这样就可以避免这个警告了。
修改带有TODO标记的那一行, 使程序能正常运行并得到给定输出。 class VeryHardProblem(): # 请勿修改这行 def __init__(self): # 请勿修改这行 self.needlessly_complicated_description = "-".join(["blah"]*99) # 请勿修改这行 # 请修改接下来的一行代码。 class VeryVeryHardProblem(): """TODO""" pass # 请勿修改这行 very_very_hard_problem = VeryVeryHardProblem() # 请勿修改这行 print(very_very_hard_problem.needlessly_complicated_description) # 请勿修改这行
class VeryVeryHardProblem(VeryHardProblem): # 修改这一行
def __init__(self):
super().__init__() # 调用父类的构造函数
self.needlessly_complicated_description = "-".join(["blah"]*999) # 修改这一行
very_very_hard_problem = VeryVeryHardProblem()
print(very_very_hard_problem.needlessly_complicated_description) # 输出:blah-blah-blah-...-blah