不灭的焱

加密类型:SHA/AES/RSA下载Go
复合类型:切片(slice)、映射(map)、指针(pointer)、函数(function)、通道(channel)、接口(interface)、数组(array)、结构体(struct) Go类型+零值nil
引用类型:切片(slice)、映射(map)、指针(pointer)、函数(function)、通道(channel) Go引用

作者:AlbertWen  添加时间:2015-10-24 09:15:51  修改时间:2025-12-04 04:26:07  分类:13.C/C++/Rust  编辑

Deepin 15.11 编译安装 MySQL-5.6.46 时,报错:

/usr/bin/ld: /usr/local/lib/libssl.a(s23_srvr.o): relocation R_X86_64_PC32 against symbol `ssl23_get_client_hello' can not be used when making a shared object; recompile with -fPIC

作者:AlbertWen  添加时间:2014-10-31 12:53:03  修改时间:2025-12-02 06:30:48  分类:13.C/C++/Rust  编辑

用gcc编译一个C程序的时候出现这样的警告

warning: control reaches end of non-void function

作者:AlbertWen  添加时间:2016-01-20 15:45:55  修改时间:2025-12-05 19:06:47  分类:13.C/C++/Rust  编辑

为什么要将 libapue.a 移到 /usr/local/lib 中呢?

因为 libapue.a 是 apue.h 头文件中包含的所有函数及宏定义的具体实现,是一个静态链接库。

查看 ld.conf.d/libc.conf 你会发现 gcc 在搜索链接库的时候默认会去搜索 /usr/local/lib/ 中的文件,所以我们将其放在这里,一劳永逸。

作者:AlbertWen  添加时间:2015-12-21 11:44:19  修改时间:2025-11-20 10:04:00  分类:13.C/C++/Rust  编辑

方法一:定义时赋值

struct Member test = {-10, 3.141590, "method one", 0.25};

注意:对应的顺序,不能错位。

作者:AlbertWen  添加时间:2017-10-26 14:27:19  修改时间:2025-12-06 06:47:43  分类:13.C/C++/Rust  编辑
编号 信号名称 缺省动作 说明
1 SIGHUP 终止 终止控制终端或进程
2 SIGINT 终止 键盘产生的中断(Ctrl-C)
3 SIGQUIT dump 键盘产生的退出
4 SIGILL dump 非法指令
5 SIGTRAP dump debug中断
6 SIGABRT/SIGIOT dump 异常中止
7 SIGBUS/SIGEMT dump 总线异常/EMT指令
8 SIGFPE dump 浮点运算溢出
9 SIGKILL 终止 强制进程终止
作者:AlbertWen  添加时间:2015-10-24 09:16:26  修改时间:2025-11-10 20:52:52  分类:13.C/C++/Rust  编辑

OpenSSL 加解密库

作者:AlbertWen  添加时间:2017-10-26 14:10:54  修改时间:2025-11-02 16:40:23  分类:13.C/C++/Rust  编辑

操作系统:Mac OS X 10.11.5

1、下载书中的源代码:点击下载

2、切换到解压后的目录 unpv13e,先查看下 README,依次执行:

./configure

cd lib
make

cd ../libfree
make
作者:AlbertWen  添加时间:2017-10-26 18:09:32  修改时间:2025-10-17 09:54:09  分类:13.C/C++/Rust  编辑
  fopen(打开文件)

定义函数

FILE * fopen(const char * path,const char * mode);

函数说明

参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

mode有下列几种形态字符串:

r     打开只读文件,该文件必须存在。
r+   打开可读写的文件,该文件必须存在。
   打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a    以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+  以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。

返回值

文件顺利打开后,指向该流的 文件指针 就会被返回。若果文件打开失败则返回 NULL,并把错误代码存在 errno 中。

附加说明

一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。

范例

#include <stdio.h>

int main(int argc, char **argv)
{
	FILE *fp;
	fp = fopen("/Users/jianbao/ClionProjects/apue/123.c", "a+");
	if (fp == NULL)
	{
		printf("open fail\n");
	}
	else
	{
		printf("open success\n");
	}
    fclose(fp);

	return 0;
}
作者:AlbertWen  添加时间:2016-01-28 10:08:04  修改时间:2025-12-07 02:08:31  分类:13.C/C++/Rust  编辑

gcc 是GNU Compiler Collection,原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、 Java),可以说gcc是GNU编译器集合。

g++ 是C++编译器。

cc 是 Unix系统的 C Compiler,一个是古老的 C 编译器。而 Linux 下 cc 一般是一个符号连接,指向 gcc;可以通过 $ ls -l /usr/bin/cc 来简单察看,该变量是 make 程序的内建变量,默认指向 gcccc 符号链接和变量存在的意义在于源码的移植性,可以方便的用 gcc 来编译老的用cc编译的Unix软件,甚至连 makefile 都不用改在,而且也便于 Linux 程序在 Unix下 编译。

CC 则一般是 makefile 里面的一个名字标签,即宏定义,表示采用的是什么编译器(如:CC = gcc)。

作者:AlbertWen  添加时间:2015-10-26 11:07:06  修改时间:2025-11-13 11:02:59  分类:13.C/C++/Rust  编辑