Linux和树莓派基础交互

C标准库的assert.h提供了assert宏,用于在程序中验证假设并输出诊断信息。当表达式为假时,程序将终止并在标准错误输出错误消息。在Debug模式下,assert宏检查表达式;在Release模式下,宏不会被编译。本文通过示例展示了如何在C程序中使用assert,并介绍了如何在Ubuntu与树莓派之间使用scp命令传输文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C 标准库 - <assert.h>

简介

C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。

已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称,则 assert 宏的定义如下:

#define assert(ignore) ((void)0)

C 库宏 - assert()

描述
C 库宏 void assert(int expression) 允许诊断信息被写入到标准错误文件中。换句话说,它可用于在 C 程序中添加诊断。

声明

下面是 assert() 宏的声明。

void assert(int expression);

参数

  • expression – 这可以是一个变量或任何 C 表达式。如果 expression 为 TRUE,assert()
    不执行任何动作。如果 expression 为 FALSE,assert() 会在标准错误 stderr 上显示错误消息,并中止程序执行。

树莓派执行.c文件

使用命令nano helloworld.c命令创建文件:
在这里插入图片描述
为该文件添加一下代码:

#include <assert.h>
#include <stdio.h>
 
int main()
{
   int a;
   char str[50];
     
   printf("请输入一个整数值: ");
   scanf("%d", &a);
   assert(a >= 10);
   printf("输入的整数是: %d\n", a);
    
   printf("请输入字符串: ");
   scanf("%s", str);
   assert(str != NULL);
   printf("输入的字符串是: %s\n", str);
    
   return(0);
}


使用gcc工具编译,运行
命令1:gcc helloworld.c
命令2:./a.out
输入值为1,断言处条件不满足,程序停止并显示相关信息。

由上述例子可以有以下总结:

断言是程序调试很重要的手段,ASSERT( f )在Debug模式下,每次运行到这里后会计算括号中的表达式,如果表达式为0,则中断执行,弹出一个警告框,用户可选择“继续”,“重试”,“忽略”在Release模式下,这句语句不会被编译进代码。ASSERT一般用于程序内部确认参数的正确性,即调用内部函数的时候,要由调用者保证参数的正确,而被调用函数内部,就可以通过ASSERT来检查参数是否满足要求。

用scp 命令,练习在Ubuntu系统与树莓派系统间进行文件复制传输

一、使用scp指令,失败
二、ps -e | grep ssh, 发现只有客户端的ssh,没有服务端的ssh
在这里插入图片描述
三、安装ssh服务端,sudo apt-get install openssh-server
四、安装失败,无法在aliyu的源下载到,于是把源改成华为的。
在这里插入图片描述
五、再次执行sudo apt-get install openssh-server
六、开启ssh服务端 sudo service ssh start
七、ps -e | grep ssh 查看是否开启
在这里插入图片描述
有sshd表示开启了
八、ifconfig查看Ip
在这里插入图片描述
九、scp指令,拷贝文件。 scp test pi@192.168.10.11:/home/pi
在这里插入图片描述
注意,当时我直接按enter键发现无法连接,输入y也无法连接,输入yes才能成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值