我是怎么知道 PTHREAD_MUTEX_INITIALIZER 是什么鬼东西的 ??

摘要:
7#defineTprintf;//pthread函数除pthread_exit()不返回之外,其它函数都返回错误码,这个宏打印这些函数的错误字符串8#defineRESOLVETEXT  //首先扩展x,再转化为字符串9#defineTEXT#x//#和##的用途还要用说?

很简单 写这么几句代码

1 #include <pthread.h>
2
3 PTHREAD_MUTEX_INITIALIZER

cpp 一解析就出来了

1714 # 238 "/usr/include/pthread.h" 3 4
1715 int pthread_suspend (pthread_t);
1716 int pthread_continue (pthread_t);
1717 # 2 "main.c" 2
1718
1719 (pthread_mutex_t)19

当然这么野蛮的方法我是没有必要浪费时间记录的 我要的是用代码把这类宏的原型打印出来!

7 #define T(x) printf(#x " -> %s ", strerror(x)); // pthread函数除pthread_exit()不返回之外, 其它函数都返回错误码, 这个宏打印这些函数的错误字符串
8 #define RESOLVE(x) TEXT(x)   // 首先扩展x, 再转化为字符串
9 #define TEXT(x) #x // #和##的用途还要用说? #把x用""包裹起来, 同时帮你把x中的"用"代替, 变成常量字符串字面值, ##有两个用法, 用来粘贴变量, 或使可变宏参数接受0个可变参数

15 printf("%s ", RESOLVE(PTHREAD_MUTEX_INITIALIZER));

15 printf("%s ", RESOLVE(__FILE__));

然后就是喜闻乐见的结果显示在我闪亮的终端:

(pthread_mutex_t)19

"main.c"

看看cpp预处理

printf("pthread_join(th, &r)" " -> %s ", strerror(pthread_join(th, &r)));;

printf("%s ", "(pthread_mutex_t)19");

printf("%s ", ""main.c"");

免责声明:文章转载自《我是怎么知道 PTHREAD_MUTEX_INITIALIZER 是什么鬼东西的 ??》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【面试题】新东方.NET工程师面试题总结android 自定义控件属性获取bitmap和drawable的绘制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

将一个数的字节顺序逆置

将一个数的字节顺序逆置 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 int main() 5 { 6 int ival;//逆置的数 7 int res;//存储逆置后的数 8 9 while(fflush(stdin),printf("En...

printf 格式化输出符号详细说明(转)

%a             浮点数、十六进制数字和p-记数法(C99)%A    浮点数、十六进制数字和p-记法(C99)%c     一个字符(char) %C           一个ISO宽字符 %d    有符号十进制整数(int)(%ld、%Ld:长整型数据(long),%hd:输出短整形。)  %e    浮点数、e-记数法%E    浮点数...

openssl 学习之从证书中提取RSA公钥N 和 E

原文链接:http://blog.csdn.net/kkxgx/article/details/19850509 通常数字证书包含很多信息,其中N和E值即我们称为的公钥。如何从PEM 或者DER格式的证书中提出证书呢?下面给出代码实现从PEM和DER编码的证书中提出N、E。 [cpp]view plaincopy #include<open...

c语言进阶6-指针

指针是c语言的一个重要组成部分 是c语言的核心、精髓所在,用好指针可以在c语言编程中起到事半功倍的效果。一方面,可以提高程序的编译效率和执行速度以及实现动态的存储分配;另一方面,使用指针可使程序更灵活,全球表示各种数据结构,编写高质量的程序。 指针是c语言显著的优点之一,其使用起来十分灵活而且能提高某些程序的效率,但是如果使用不当则很容易造成系统错误。许多...

Linux操作系统学习_操作系统是如何工作的

Linux操作系统学习_操作系统是如何工作的实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机、堆栈(函数调用堆栈)机制和中断机制       首先要整明白的一个问题是什么是存储程序计算机?其实存储程序计算机正是冯.诺依曼最初提出的计算机体系模型,现在我们一提到冯.诺依曼体系结构首先会想到的应该是包含输...

windows qt 使用c++ posix接口编写多线程程序(真神奇)good

一、多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理是程序的并发执行。基于线程的多任务处理是同一程序的片段的并发执行。多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径,C++ 不包含多...