UNIXC01 DAY01 开发环境 、静态库01

本文详细介绍C语言编程的基础知识,包括HelloWorld程序的编写、产生警告的编译选项、分文件声明与定义函数的方法以及添加头文件的搜索路径。通过具体案例,帮助读者理解并掌握C语言编程的基本流程。

1 Hello, World !

1.1 问题

使用vi编写HelloWorld.c程序,运行后,在控制台输出“Hello World!”

1.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:打开vi,编辑源程序

    #include <stdio.h>
    int main()
    {
        printf("Hello World!");
        return 0;
    }

上述代码中,以下代码:

    printf("Hello World!");

是在控制台上输出字符串“Hello World!”,其中printf是一个函数,用于将参数字符串输出到控制台上。

步骤二:预编译

在控制台使用gcc -E HelloWorld.c -o HelloWorld.i命令进行编译预处理,完成编译前的预处理工作,将源文件HelloWorld.c处理成HelloWorld.i文件。

步骤三:编译

在控制台使用gcc -S HelloWorld.i命令将与处理后的高级语言文件HelloWorld.i翻译成汇编语言,得到汇编文件HelloWorld.s

步骤四:汇编

在控制台使用gcc -c HelloWorld.s命令将汇编文件HelloWorld.s翻译成机器指令,得到目标文件HelloWorld.o

步骤五:链接

在控制台使用gcc HelloWorld.o -o HelloWorld命令将目标文件HelloWorld.o和标准库链接,得到可执行程序HelloWorld

步骤六:运行

在控制台敲入可执行程序名HelloWorld,然后回车即可执行该文件。

1.3 完整代码

本案例的完整代码如下所示:

#include <stdio.h>
int main()
{
    printf("Hello World!");
    return 0;
}

2 产生尽可能多的警告

2.1 问题

gcc是gnu旗舰产品,它的功能非常强大,有多达上千个选项用于完成各种功能。本案例介绍如何产生尽可能多的警告。

2.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:使用Wall选项产生尽可能多的警告

在控制台使用gcc -WallHelloWorld.c命令一次性编译链接源文件HelloWorld.c时,如果源文件有问题,则会产生尽可能多的警告,以提示程序的问题所在。

3 分文件声明、定义和调用函数

3.1 问题

当需要编写较大型的程序时,往往把与这方面相关的函数集中到某一个文件中,把那方面相关的函数集中到另一个文件中。这时就需要将函数的声明放在扩展名为.h的头文件中,将函数的定义放在扩展名为.c的文件中,而在其他的扩展名为.c的文件中调用它们。

3.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:定义头文件print.h

代码如下所示:

#ifndef exam_print_h
#define exam_print_h

void printArea(char* str, double area);

#endif

上述代码中,以下代码:

#ifndef exam_print_h
#define exam_print_h

和代码:

#endif

在一起的作用是防止该头文件中其间的内容被多次包含,而造成的重复定义错误。
上述代码中,以下代码:

void printArea(char* str, double area);

在头文件中声明了一个函数。

步骤二:在print.c文件中定义头文件print.h中声明的函数体

代码如下所示:

#include <stdio.h>
#include "print.h"
void printArea(char* str, double area)
{
	printf("图形%s的面积是%lf\n", str, area);
}

注意:需要使用#include将头文件包含进来。

上述代码中,以下代码:

void printArea(char* str, double area)
{
	printf("图形%s的面积是%lf\n", str, area);
}

是头文件print.h中声明的函数的定义。

步骤三:在main.c文件中调用头文件print.h中声明的函数

代码如下所示:

#include "print.h"
int main(int argc, const char * argv[])
{
	// insert code here...
	printArea("圆", 100);
	return 0;
}

注意:需要使用#include将头文件包含进来。

上述代码中,以下代码:

printArea("圆", 100);

是头文件print.h中声明的函数的调用。

步骤四:编译链接

在控制台使用gcc main.c print.c –I <指定路径> 命令一次性编译链接源文件main.cprint.c,由于没有指定生成的文件名,所以生成可执行文件a.out
上述命令中,选项 -I 的作用是先找-I指定的目录,再找当前目录,最后找系统目录。

3.3 完整代码

本案例中的完整代码如下所示:
文件print.h

#ifndef exam_print_h
#define exam_print_h

void printArea(char* str, double area);

#endif

文件print.c

#include <stdio.h>
#include "print.h"
void printArea(char* str, double area)
{
	printf("图形%s的面积是%lf\n", str, area);
}

文件main.c

#include "print.h"
int main(int argc, constchar * argv[])
{
	// insert code here...
	printArea("圆", 100);
	return 0;
}

4 头文件的附加搜索路径

4.1 问题

unix是一个多用户的操作系统,意味着每个用户登录系统之后,都有自己专用的运行环境。这个运行环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。

本案例介绍如何添加头文件的附加搜索路径。

4.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:头文件的附加搜索路径

在控制台上输入如下命令:

export C_INCLUDE_FILE=/Users/tarena/desktop

即可将C头文件的附加搜索路径设置为 /Users/tarena/desktop,相当于gcc-I 选项的功能。

胚胎实例分割数据集 一、基础信息 • 数据集名称:胚胎实例分割数据集 • 图片数量: 训练集:219张图片 验证集:49张图片 测试集:58张图片 总计:326张图片 • 训练集:219张图片 • 验证集:49张图片 • 测试集:58张图片 • 总计:326张图片 • 分类类别: 胚胎(embryo):表示生物胚胎结构,适用于发育生物学研究。 • 胚胎(embryo):表示生物胚胎结构,适用于发育生物学研究。 • 标注格式:YOLO格式,包含实例分割的多边形标注,适用于实例分割任务。 • 数据格式:图片来源于相关研究领域,格式为常见图像格式,细节清晰。 二、适用场景 • 胚胎发育AI分析系统:构建能够自动分割胚胎实例的AI模型,用于生物学研究中的形态变化追踪和量化分析。 • 医学与生物研究:在生殖医学、遗传学等领域,辅助研究人员进行胚胎结构识别、分割和发育阶段评估。 • 学术与创新研究:支持计算机视觉与生物医学的交叉学科研究,推动AI在胚胎学中的应用,助力高水平论文发表。 • 教育与实践培训:用于高校或研究机构的实验教学,帮助学生和从业者掌握实例分割技术及胚胎学知识。 三、数据集优势 • 精准与专业性:实例分割标注由领域专家完成,确保胚胎轮廓的精确性,提升模型训练的可靠性。 • 任务专用性:专注于胚胎实例分割,填补相关领域数据空白,适用于细粒度视觉分析。 • 格式兼容性:采用YOLO标注格式,易于集成到主流深度学习框架中,简化模型开发与部署流程。 • 科学价值突出:为胚胎发育研究、生命科学创新提供关键数据资源,促进AI在生物学中的实际应用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值