查看linux系统宏定义

跨平台程序,经常要用到区分系统的宏定义,比如windows中的WIN32, WIN64, linux中的 unix, linux等等系统自定义宏

那么在linux下面,怎么查看系统有哪些自定义宏咧,用如下方法:

$ touch dummy.hxx

$ cpp -dM ./dummy.hxx

输出如下:

[xhq@syfh1-10-0-128-229 server]$ cpp -dM ./dummy.hxx 
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define __FLT_EVAL_METHOD__ 0
#define __unix__ 1
#define __x86_64 1
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 7
#define __DEC64_MAX_EXP__ 385
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.18973149535723176502e+4932L
#define __UINTMAX_TYPE__ long unsigned int
#define __linux 1
#define __DEC32_EPSILON__ 1E-6DF
#define __unix 1
#define __LDBL_MAX_EXP__ 16384
#define __linux__ 1


要查看全部,可以加less命令:

$ cpp -dM ./dummy.hxx  |   less

就可以光标向上翻或者向下翻,因为系统可能宏定义比较多,一屏看不过来



### Linux 中信号的宏定义列表及其对应的头文件 在 Linux 编程中,信号处理是一个重要的部分。为了支持信号机制,Linux 提供了一系列与信号相关的宏定义以及必要的头文件。以下是详细的说明: #### 1. **常用的信号宏定义** 这些通常用于表示不同的信号类型,例如终止进程、中断操作等。常见的信号包括但不限于以下几种[^1]: - `SIGINT`:由键盘产生的中断信号 (通常是 Ctrl+C)。 - `SIGTERM`:请求正常终止的标准信号。 - `SIGKILL`:强制杀死进程的不可捕获信号。 - `SIGSEGV`:非法内存访问时触发的信号。 - `SIGCHLD`:子进程状态改变时发送给父进程的信号。 完整的信号列表可以通过查阅 `<signal.h>` 文件获得。该头文件包含了所有标准 POSIX 和扩展的信号常量声明。 #### 2. **涉及的主要头文件** 要使用上述信号及相关函数,在程序中需包含特定的头文件。主要使用的头文件如下[^3]: - `<signal.h>`:这是最核心的头文件之一,它不仅提供了信号的相关宏定义,还定义了一些常用的操作函数,比如 `raise()`、`sigaction()` 等。 - `<sys/signal.h>`:某些系统可能还需要额外引入此头文件来补充更底层的功能实现细节。 - `<bits/signum.h>` 或其他平台特有头文件:具体取决于编译器环境和目标架构设置情况。 下面给出一段简单的代码示例展示如何利用这些资源完成基本功能开发: ```cpp #include <iostream> #include <csignal> // C++版本中的<signal.h> void handler(int sig){ std::cout << "Caught signal: " << sig << '\n'; } int main(){ struct sigaction sa; memset(&sa, 0, sizeof(sa)); sa.sa_handler = &handler; if(sigaction(SIGINT,&sa,nullptr)==-1){ perror("Error setting SIGINT handler"); exit(EXIT_FAILURE); } while(true){sleep(1);} } ``` 以上代码片段展示了通过自定义处理器捕捉并响应来自用户的中断命令(Ctrl-C),即`SIGINT`事件的过程。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值