#将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. 在字符界面tty1~tty6中使用鼠标,并用其复制粘贴

    1. 安装 无意间看到gpm这个服务可以让你在tty1~tty6 环境中使用鼠标. 先用 rpm -qa gpm 查看是否已经安装此服务,如果提示以安装,则可以直接开启: 否则就要通过 yum ins ...

  2. Middleware In ASP.NET Core

    中间件简介 ASP.NET Core 由很多中间件构成,实现了一个HTTP请求管道(pipeline). Request的Response的管道可以看成一个Push Stack 和 Pop Stack ...

  3. TFS安装与管理

    整了几天TFS,把相关的一些配置与安装的要点简单记下,希望对大家有用.本篇主要是安装与配置上的内容,下一篇会介绍如何使用以及使用方面的相关心得体会. 本篇内容简要: 1.   安装部署 1.1.  流 ...

  4. jQuery的封装和扩展方式

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. bzoj2962 序列操作 题解

    题目大意: 有一个长度为n的序列,有三个操作1.I a b c表示将[a,b]这一段区间的元素集体增加c,2.R a b表示将[a,b]区间内所有元素变成相反数,3.Q a b c表示询问[a,b]这 ...

  6. Android Intent (可通过URL启动 Activity)

    Intent分为两大类: (1)显性的(Explicit) (2)隐性的(Implicit) 对于隐性意图,在某些时候, 应用程序只是想启动具有某种特征的组件, 并不想和某个特定的组件耦合. 使用In ...

  7. Android js相互调用

    一.webview相当于android中的浏览器,基于webkit开发,可以浏览网页文件,支持css javas cript 以及html webview.getSettings().setJavaS ...

  8. HDU 4454 Stealing a Cake(枚举角度)

    题目链接 去年杭州现场赛的神题..枚举角度..精度也不用注意.. #include <iostream> #include <cstdio> #include <cstr ...

  9. 51nod算法马拉松13

    A 取余最长路 不难发现路径可以拆成三条线段,只要知道两个转折点的位置就能计算出答案. 设sum(i,l,r)表示第i行从l到r元素的和,则答案可以表示为sum(1,1,x)+sum(2,x,y)+s ...

  10. [慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时

    案例梳理时间:2013-9-25 写在前面的话: 在慢查优化1和2里都反复强调过 explain 的重要性,但有时候肉眼看不出 explain 结果如何指导优化,这时候还需要有一些其他基础知识的佐助, ...