#将c文件编译成动态库
//hello.c int hello_add(int a, int b)
{
return a + b;
} gcc -O -c -fPIC -o hello.o hello.c // -fPIC:是指生成的动态库与位置无关。 将hello.c编译成hello.o
gcc -shared -o libhello.so hello.o // -shared:是指明生成动态链接库 将hello.o链接成libhello.so动态库 #使用一个动态库
//hello_test.c #include <stdio.h> int main()
{
int a = 3, b = 4, result = 0;
result = hello_add(a, b);
printf("%d + %d = %d\n", a, b, hello_add(a,b));
printf("%d======\n", result);
return 0;
} cp libhello.so /usr/lib/ //将生成的动态库复制到lib目录
gcc -o hello_test -lhello hello_test.c //通过-l选项来指定要使用的相关动态库 #关于const常量
const int *a;
int const *a; //值不可变,地址可以变 int * const a; //值可变,地址不可变 int const * const a; //值和地址都不可变 #include <stdio.h> void test_const(int * const a)
{
//int c = 5;
//*a = c;
(*a)++;
//a++;//
printf("0x%x\n", a);
printf("%d\n", *a);
} int main(void)
{
int b = 2; test_const(&b);
return 0;
} #野指针 会导致 段错误(“segmentation fault”) #指针也有类型,所以a++这种操作系统才知道要移动几个内存单元。
#指针的类型是在指针定义时确定的。比如:“int *p;”中“int *”就指明了这是一个什么类型的指针。如果p++,那系统根据指针类型就知道要移动几个内存单元格。
如果“p + 1”是否也是根据指针类型来确认移动几个内存单元? #Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是:[1]
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。 #Makefile中输出一个变量的内容
echo $(OUTPUT_DIR) #Makefile中要用tab缩进,否则会引起语法错误 #Makefile字符串拼接 [1] [2]
var3=${var1}${var2}

C使用相关笔记的更多相关文章

  1. HTTPS证书申请相关笔记

    申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...

  2. JNI相关笔记 [TOC]

    JNI相关笔记 目录 JNI相关笔记 1 生成native code所需要的头文件 2 JNI提供的一些函数和方法 3 局部引用,全局引用,全局弱引用. 4 异常 1 生成native code所需要 ...

  3. Hadoop相关笔记

    一.            Zookeeper( 分布式协调服务框架 ) 1.    Zookeeper概述和集群搭建: (1)       Zookeeper概述: Zookeeper 是一个分布式 ...

  4. redis相关笔记(二.集群配置及使用)

    redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...

  5. redis相关笔记(三.redis设计与实现(笔记))

    redis笔记一 redis笔记二 redis笔记三 1.数据结构 1.1.简单动态字符串: 其属性有int len:长度,int free:空闲长度,char[] bur:字符数组(内容) 获取字符 ...

  6. Windows API 进程相关笔记

    0. 前言 最近做了一个进程信息相关的项目,整理了一下自己做项目时的笔记,分享给大家 1. 相关概念 1.1 HANDLE 概念 HANDLE(句柄)是Windows操作系统中的一个概念. 在Wind ...

  7. PHP相关笔记

    扩展包(相关链接):https://packagist.org/: 插件postman主要应用于web开发时get.post请求时查看其响应:

  8. lua相关笔记

    --[[ xpcall( 调用函数, 错误捕获函数 ); lua提供了xpcall来捕获异常 xpcall接受两个参数:调用函数.错误处理函数. 当错误发生时,Lua会在栈释放以前调用错误处理函数,因 ...

  9. Erlang使用相关笔记

    #从源码编译安装Erlang 1. wget http://www.erlang.org/download/otp_src_r16b.tar.gz -p /usr/local/src 2. tar z ...

随机推荐

  1. Floyd_Warshall POJ 3660 Cow Contest

    题目传送门 题意: m组关系,A能打败B,问最后有几头牛的排名能确定 分析:如果排名确定,那么能打败它的到它一定通,它到能打败的一定能通,也就是和为n-1.用Floyd的传递闭包 #include & ...

  2. HDU4307 Matrix(最小割)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4307 Description Let A be a 1*N matrix, and each ...

  3. WPF拖放功能实现zz

    写在前面:本文为即兴而作,因此难免有疏漏和词不达意的地方.在这里,非常期望您提供评论,分享您的想法和建议. 这是一篇介绍如何在WPF中实现拖放功能的短文. 首先要读者清楚的一件事情是:拖放主要分为拖放 ...

  4. django 自定义表单

    创建一个1.html的东西 <html> <body> <form method='post'> {{form.as_p}} <input type=&quo ...

  5. BZOJ4369 : [IOI2015]teams分组

    将分组计划按照$k$从小到大排序,维护一个单调栈,每个元素为一个矩形,按最底下元素从高到低排列,栈顶最低. 每次加入一个矩形可选区域,维护单调栈,可以往回合并. 然后将所有最低点不满足的矩形取出,合并 ...

  6. samba 挂载 问题

    link: http://www.minunix.com/2013/04/linux-mount-samba/ http://my.oschina.net/laopiao/blog/161648 最近 ...

  7. [转]maven安装以及eclipse配置maven

    转自:http://jingyan.baidu.com/article/295430f136e8e00c7e0050b9.html 方法/步骤 下载maven的bin,在apache官方网站可以下载. ...

  8. Nodejs-搭建Nodejs开发环境

    学习nodejs,需要一个好的开发工具,并不想用无智能提示和不友好格式的记事本编写 1. 从www.nodejs.org下载nodejs并安装到指定的目录. 2. 下载一个开发工具, 可以选择webs ...

  9. Android ftp 上传图片

    1.确定ftp文件夹 /** FTP文件夹 **/ private String ftpPath = "hshscrenncap" + "/" + DateUt ...

  10. Linux的磁盘分区(1)

    分区命名: 1.Linux下的分区命名不同于windows下的命名,对硬盘如IDE硬盘采用类似/dev/hdxy的方式来命名,其中hd表示分区所在的设备类型,如IDE硬盘,x表示硬盘盘号(a为基本主盘 ...