Linux下默认的宏测试

gcc: __linux__ 这里可能有的疑问是为什么不直接使用__linux__ 作为判断,非得再来一个新的宏符号?实例是:googletest里有用这个。判断gcc在什么平台的一个方法。 阅读详情

今天为了弄明白用什么宏来区分linux平台,特意写了个小程序试了一下。

代码如下:

#include <stdio.h>


int main(int argc, char *argv[])
{
        #ifdef LINUX
        printf("LINUX/n");
        #endif

        #ifdef _LINUX
        printf("_LINUX/n");
        #endif

        #ifdef __LINUX
        printf("__LINUX/n");
        #endif

        #ifdef _LINUX_
        printf("_LINUX_/n");
        #endif

        #ifdef __LINUX__
        printf("__LINUX__/n");
        #endif

        #ifdef linux
        printf("linux/n");
        #endif

        #ifdef _linux
        printf("_linux/n");
        #endif

        #ifdef __linux
        printf("__linux/n");
        #endif

        #ifdef _linux_
        printf("_linux_/n");
        #endif

        #ifdef __linux__
        printf("__linux__/n");
        #endif

        #ifdef GNU
        printf("GNU/n");
        #endif

        #ifdef _GNU
        printf("_GNU/n");
        #endif

        #ifdef __GNU
        printf("__GNU/n");
        #endif

        #ifdef _GNU_
        printf("_GNU_/n");
        #endif


        #ifdef __GNU__
        printf("__GNU__/n");
        #endif

        #if defined(gnu) || defined(_gnu) || defined(__gnu) || defined(_gnu_) || defined(__gnu__)
        printf("*gnu*/n");
        #endif

        return 0;
}

运行结果:

linux
__linux
__linux__

Kernel, 编译宏:CONFIG_FORCE_MAX_ZONEORDER 用来设置,MAX_ORDER宏,这个宏的默认值是11;真正需要或者做测试时需要设置此宏。一般不用改。 /* Free memory management - zoned buddy allocator. */ #ifndef CONFIG_FORCE_MAX_ZONEORDER #define MAX_ORDER 11 #else #define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER #endif https://github.com/laijs/linux-kern 阅读详情

相关推荐

9、Linux C 编程:特性测试宏、编译阶段与 Make 工具使用

本文深入探讨了Linux C编程中的关键知识点,包括特性测试宏的定义与作用、编译过程的四个阶段(预处理、编译、汇编和链接)以及Make工具的使用技巧。通过示例代码和详细步骤解释,帮助开发者编写更健壮、可移植的C程序,并提高开发效率。

grape的博客 69

__linux

总能在一些代码中看到类似于如下的宏定义: d        但查遍整个工程代码却没有找到在哪儿定义过他们。        今天仔细研究了一下,原来他们是由操作系统或是编译器定义的。以下将以__linux为例简要说明一下。        例如我们平常编译程序使用gcc,那么在gcc中就定义了__linux宏。

VermillionTear的专栏 1249

Linux修改默认jdk

1、下载解压jdk1.8压缩包,配置环境变量 export JAVA_HOME=/usr/local/jdk1.8.0_181 -- jdk所在目录 export JRE_HOME=/usr/local/jdk1.8.0_181/jre -- jre所在目录 export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOM

Learning 1475

【C/C++区分linux和windows环境的宏】【转载】

请注意,这只是一种常见的方法,并且可能还有其他方法来区分不同操作系统的宏定义,具体取决于编译器和操作系统环境。你可以通过检查这些宏的定义情况来进行平台特定的编译代码。

j8267643的博客 2659

1、Linux命令

Python学习之Linux基础学习

weixin_36142178的博客 372

海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南

本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。

s3t4u的博客 734

Linux--#ifdef和#endif的作用

如果指定的标识符已经定义,则编译下面的代码。

weixin_67916525的博客 611

谷歌学术用publish-or-perish来对引用量排序

用谷歌学术搜索文献的时候发现不能按照引用量高低进行排序,网上提供了这个软件。 下载地址如下:Publish or Perish (harzing.com)https://harzing.com/resources/publish-or-perish 关于软件界面页面和各种指标的介绍,可以参考中科大的这个PPT: 文献分析软件——publish or perish(精品·公开课件).ppt (book118.com)https://max.book118.com/html/2018/1124/813

m0_48878989的博客 1万+

问题:POSIX1.XSI扩展导致信号不可靠

写shell作业控制时,为了捕获子进程从暂停到继续运行的状态WIFCONTINUED(status),加入了POSIX1.XSI扩展,即在源文件开头定义功能测试宏。结果发现父进程收到一次sigchild信号进行信号处理函数后,将sigchild的响应设置为了默认动作。而如果没有则完成动作后不会将对应信号的动作设为默认动作。为什么会导致signal()的行为发生变化?200809L。

n_o_name的博客 260

C语言如何实现C++的默认参数方法

本文介绍了如何在C语言中利用宏实现类似C++默认参数的功能。通过宏的可变参数计算技巧,设计了一个支持0-4个参数的日志打印宏FAST_LOG_PRINT。核心原理是使用FAST_LOG_PRINT_NUMBER和FAST_LOG_MERG两个宏推导参数个数,再通过宏拼接调用对应的参数版本。这种方法利用宏参数"挤数字"的巧妙设计,根据参数数量选择不同的实现,可应用于缺省参数、自动生成测试用例等场景。文章展示了Linux/Zephyr等系统中常见的宏编程技巧,体现了C语言宏的强大灵活性。

17岁boy的博客 253

从Podfile到分享成功:ShareSDK小红书模块集成全流程实战(附视频分享代码)

本文详细介绍了iOS应用如何通过ShareSDK集成小红书分享功能的全流程,包括环境配置、SDK初始化、图片和视频分享实现,以及常见问题排查和性能优化策略。特别针对视频分享这一高频需求场景,提供了完整的代码示例和实战技巧,帮助开发者快速实现社交分享功能。

weixin_42540248的博客 196

Kali Linux 默认工具包安装

Kali Linux 是一款专为安全研究人员和渗透测试者设计的 Linux 发行版,其默认工具包通过 kali-linux-default 元包提供,包含信息收集、漏洞扫描和密码破解等工具。本文详细介绍了安装默认工具包的步骤,包括更新软件包索引、安装元包、验证安装以及使用图形化工具 kali-tweaks 进行安装。此外,还提供了常见问题的解决方法和其他元包选项,如 kali-linux-core 和 kali-linux-large。安装前需确保系统具备足够的磁盘空间和稳定的网络连接,并建议在虚拟机中运行

hello.reader 2461

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 5974

在linux中默认使用hdmi

在驱动全部配置后,还需要将默认设备设置成HDMI 首先找到HDMI设备号,我这里是  card 1 device 3 > aplay -l **** List of PLAYBACK Hardware Devices **** card 0: SB [HDA ATI SB

xubin_sh的专栏 1万+

如何修改linux中默认python版本,修改linux下默认的python版本

首先在终端输入:python --verison 查看本机默认采用的python 版本接着进入/usr/local/lib 目录查看当前系统中安装了多少个python版本 如果只有一个,就安装你需要的版本 sudo apt-get install python3 (这里以python3为例)修改默认的版本 并不是删除你不需要的版本,因为系统的许多底层是依赖python的,删除后可能会导致系统无法正...

weixin_31109967的博客 1817

2024年 Flutter 面试题大全(2024.6.28持续更新中)

2024年 Flutter 面试题大全(持续更新中)

Code Metaverse 6602

linux下程序默认宏,linux-调度程序中的sched_feat宏是什么意思

调度程序代码中使用sched_feat()宏来测试是否启用了某个调度程序功能.例如,在kernel / sched / core.c中,有一段代码int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner){if (!sched_feat(OWNER_SPIN))return 0;测试是否设置了“如果互斥锁所有者正在运...

weixin_33376046的博客 588

【APM】在Kubernetes中,使用Helm安装Grafana 9.5.1

Grafana是一款流行的开源数据可视化和分析平台,它特别擅长处理时序数据,即随时间变化的数据,因此在监控系统性能、应用程序指标、物联网(IoT)设备数据等领域有着广泛的应用。

CN_Eden 1179

linux 文件 目录 默认权限

结论 在linux系统中任何文件/目录都有一定的权限,对于新创建的文件或目录,也会有默认的访问权限。可能是出于安全的考虑,linux系统新建文件默认没有执行权限,其最大权限为rw-rw-rw-(666),新建目录的最大权限为rwx-rwx-rwx(777)。而默认的权限与umask命令有关。 umask指定当前用户在新建文件和目录时的默认权限,其值可以通过umask 命令得到,其值的含义与 ...

whatday的专栏 9937

linux mysql8 默认值

linux相关学习资料:https://edu.51cto.com/video/1400.htmlLinux MySQL 8 默认值设置指南 作为一名刚入行的开发者,你可能会遇到需要设置MySQL数据库默认值的情况。本文将指导你如何在Linux环境下配置MySQL 8的默认值。我们将通过一个简单的流程,使用表格展示步骤,...

weixin_40980053的博客 93

【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04

Jeson Orin Nano系列:烧写Ubuntu22.04 电脑主机可以是Ubuntu20.04

郭老二 4864

linux恢复默认路由,Linux系统下通过策略路由实现多默认路由

问题简述一般地说,在Linux系统路由表内只能有一条默认路由。当出站数据包根据目的IP地址选路失败后,执行默认路由,交默认路由指向的下一跳路由器(默认网关)转发数据包。现需要同时存在两条默认路由。数据包通过何种默认路由,由程序指定(或根据规则)。数据包通过特定的路由规则转发到对应的路由器。在下文中,我们以如下的拓扑为例,介绍如何通过策略路由来实现上述需求。服务器上安装有两块网卡,分别为p7p1和p...

weixin_29251131的博客 1142

SmartFusion从FPGA到ARM系列教程

前言 本系列教程,将会以Microsemi SmartFusion一代芯片A2F200M3F为例,简单介绍片上ARM Cortex-M3 硬核 MCU 基本外设的使用,及其与FPGA逻辑模块进行交互的示例。 在学习片上硬核ARM Cortex-M3 MCU的开发之前,要先熟悉Microsemi Libero SoC开发环境的使用,可以参考:Microsemi Libero SoC系列教程 关于Microsemi SmartFusion混合型FPGA的介绍,可以参考:Microsemi SmartFusio.

whik1194的博客 8249

Linux gcc没有默认对齐数(内赋gcc官方大佬邮件)

轻松求得系统的默认对齐数 在自己解决问题中遇到了内存对齐的问题。突然发现我的Linux默认对齐数好像不是4。可以参考这个OJ题来理解。有趣的内存对齐面试题CSDN上好像所有的博客都说是4。然后就记录一下怎么推断出自己系统的默认对齐数。 推断对齐数 首先,我们先写一个程序: #include <iostream> struct test { char a; doub...

Gerald的博客 3031

linux修改ls默认排序,linux命令ls -l的默认排序方式

差不多快实现完了ls -l,但是在测试阶段发现一个问题,对于包含[a-ZA-Z]之外的字符,系统的排序方式并不一样。很想了会儿,总算发现原来它的排序方式是无视[a-ZA-Z]之外的字符的至于怎么发现的,只是个偶然。之前测试的文件夹下a.out被排在了address.c之后,百思不得其解。后来偶然换了个文件夹测试,由于之前废弃的项目或测试目录被我加了__前缀,这样一看就一目了然了,ls_l.cpp排...

weixin_30523989的博客 692

天邦达-铁塔BMS1.1.634-26-07.zip

天邦达-铁塔BMS1.1.634-26-07

linux 创建用户和修改新增用户默认的家目录

文章目录一、用户操作①创建新用户②给新用户设置密码③ 默认家目录二、修改默认家目录① 编辑passwd文件② 在下面找到新增的用户③ 把前面的目录(/home/gblfy)修改为(/app/gblfy)三、验证测试①切换用户②查看当前用户目录 一、用户操作 ①创建新用户 useradd gblfy ②给新用户设置密码 passwd gblfy ③ 默认家目录 /home/gblfy/ 二、修...

Gblfy_Blog 1万+

《基于YOLOv8的体育比赛球类运动轨迹追踪》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!!项目备注1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

上一篇: [转帖]Linux下如何查找一个函数在哪个库中
下一篇: [转]iconv 转码编程简介
guoshanhe
博客等级 码龄21年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值