gpt4 book ai didi

c - 在函数调用前放置括号的 C 语言是什么样的结构?

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:04 25 4
gpt4 key购买 nike

我今天在C编程书的进程和线程章节中看到了这行代码:

printf("[Child]  child thread id: 0x%x\n", (unsigned int)pthread_self());

(unsigned int)pthread_self()这部分我没见过,不知道第一对括号是干什么用的。有什么想法吗?

附:

我记得在php的文档中,函数文档也有类似的表述:

int time()

但在实际代码中,我们只使用了time()部分,int是为了文档目的,显示函数time()的返回值


更新:

我在书中输入了测试每个线程id的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/types.h>
#include <unistd.h>

int global = 5;

void* ChildCode(void* arg) {
int local = 10;

global++;
local++;
printf("[Child] child thread id: 0x%x\n", (unsigned int)pthread_self());
printf("[Child] global: %d local: %d\n", global, local);

pthread_exit(NULL);
}

int main() {
pthread_t childPid;
int local = 10;

printf("[At start] global: %d local: %d\n", global, local);

/* create a child thread */
if (pthread_create (&childPid, NULL, ChildCode, NULL) != 0)
{
perror("create");
exit(1);
} else { /* parent code */
global++;
local--;
printf("[Parent] parent main thread id : 0x%x\n", (unsigned int)pthread_self());
printf("[Parent] global: %d local: %d\n", global, local);
sleep(1);
}
printf("[At end] global: %d local: %d\n", global, local);
exit(0);
}

它给了我一些注意事项(不是警告不是错误):

clang example_thread.c 
/tmp/example_thread-9lEP70.o: In function `main':
example_thread.c:(.text+0xcc): undefined reference to `pthread_create'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我对代码一无所知,知道吗?

最佳答案

pthread_self() 的返回值是一个pthread_t(参见man pthread_self)。

(unsigned int) pthread_self()用于将pthread_self()的返回值转换为无符号整数。

有关在 C 中进行转换的更多信息,请参阅 http://www.aui.ma/personal/~O.Iraqi/csc1401/casting.htm

关于c - 在函数调用前放置括号的 C 语言是什么样的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11843340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com