#ifndef 它是if not define 的简写,是宏定义的一种,确切的说,是预处理功能三种(宏定义、文件包含、条件编译)中的一种 条件编译。 在c语言中,对同一个变量或者函数进行多次声明是不会报错的。 所以如果h文件里只是进行了声明工作,即使不使用# ifndef宏定义,多个c文件包含同一个 ...
分类:
其他好文 时间:
2019-10-07 21:12:27
阅读次数:
109
倘若你查看过Linux Kernel的源码,那么你对 offsetof 和 container_of 这两个宏应该不陌生。这两个宏最初是极客写出的,后来在Linux内核中被推广使用。 1. offsetof 1.1 offsetof介绍 定义:offsetof在linux内核的include/lin ...
分类:
系统相关 时间:
2019-10-05 22:38:57
阅读次数:
103
前面提到过C++具有函数重载功能,所以引出的函数名会有变化,即名称改编,如果是C语言编写的客户端则无法正确识别。 处理方法: ①只需在宏定义中间增加 extern "C",但这种使用仅针对导出的函数是全局的,如果导出的是类,则不能这样。 ②通过dumpbin查看导出的函数信息,可以看到函数名称跟我们 ...
分类:
编程语言 时间:
2019-10-05 00:44:34
阅读次数:
198
写了这么久的排序感觉还是用现成的最舒服。其实C语言其实自己带了一个快速排序在stdlib 库里,但是其函数调用的接口过于复杂,所以让人望而却步。为了加深自己的记忆,所以写下这篇博客 先来看一下函数原型 看上去就很复杂 其实 CRTIMP仅仅是一个宏定义(不明白也没啥) 其实际意义如下 C -- C语 ...
分类:
编程语言 时间:
2019-10-03 12:41:24
阅读次数:
102
不要偷懒 有时候为了方便,我会大量使用宏定义。但是最近我发现下面这两个宏定义老是出问题: 这个宏定义似乎在初始化的时候会莫名奇妙地出现一些问题。 另外,还有这个: 当你定义了一个 RP 的循环宏时,它的判断会出一些问题。比如说在上面这个例子,如果ver.size()==0,那么正常的for就不会进入 ...
分类:
其他好文 时间:
2019-10-01 00:09:53
阅读次数:
194
前言: Tensorflow交叉编译的过程是一个心塞的过程,其中可能会出现各种各样你想不到的错误。。。,个中滋味,只有经历过的人才能体会。 特意记录下所有碰到的问题,一来作为这段时间的一个小结,二来可以给他人提供些帮助。 正文: 现将已知问题列表如下,如碰到相同现象,可依此方法解决: 问题1: 错误 ...
分类:
其他好文 时间:
2019-09-30 12:26:52
阅读次数:
323
定义一维数组的语法: datatype arrayName ; 数据类型 数组名 [ ] ; 引入一个新的定义方式 宏定义 第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用; 第二种是定义常数,如#define max 100,则max代表100(这种情况下使 ...
分类:
编程语言 时间:
2019-09-24 17:53:56
阅读次数:
155
一、gdb中宏定义 macro define list_entry(ptr, type, member) ((type )( (char )ptr (unsigned long)(&((type )0) member))) 二、gdb中变量定位 set $i = 0 注: 操作符左右两端可以带空格; ...
分类:
数据库 时间:
2019-09-24 12:05:40
阅读次数:
124
这个宏定义表达式,建议学习一下,不调用变量数值做交换,我相信你第一次绝对想不到。自己琢磨吧,很有意思。 本人认为,宏定义加上{}这个符号更合适。 你细品,仔细品。 ...
分类:
编程语言 时间:
2019-09-23 12:05:35
阅读次数:
57