C语言中的接口如何实现?它和函数的定义有什么区别,请C高手来指导,杜绝Java的接口和类的回答因为我精通JAVA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中的接口如何实现?它和函数的定义有什么区别,请C高手来指导,杜绝Java的接口和类的回答因为我精通JAVA相关的知识,希望对你有一定的参考价值。

C语言中接口和函数其实没什么差别,只是有些人的习惯问题,不过一叫接口的都是针对某一个模块的功能函数集合,像一个图片采集模块一般就会有三种方式,1、头文件和.c文件;2、头文件和.so动态库;3、头文件和.a静态库。在进行程序编写时我们要添加头文件,在进行编译时,必须加入,该模块的.c或.so或.a,一种就行。
一般我们编写小函数接口,一般需要一个.h和一个.c就行了。函数的声明都是在.h中,实现都在.c中,当模块编写.c有点大时,我们可以为了编译时的速度,把.c文件编译成.so和.a。
//hello.h
#ifndef _HELLO_H_
#define _HELLO_H_

//#define 宏定义也应该在这
#include <stdio.h>

void hello();

#endif

//hello.c
#inlcude "hello.h"

void hello()
printf("Hello word!");



大概就是这样,只不过我是linux下的,函数接口定义大同小异吧
参考技术A C语言中的接El用函数指针来实现。变量指针指向的是一块数据,指针指向不同的变量则取到的是不同的数据。
函数指针指向的是一段代码(即函数),指针指向不同的函数,则具有不同的行为。以变应变正是函数指针的威力所在,C语言中的接口可以朴素的定义为:一组相关函数指针+所需要的数据结构。

参考资料:http://wenku.baidu.com/view/6c161a8502d276a200292e2c.html

参考技术B c语言是没法实现接口的。最多也就实现类,用strut 结构体中包含函数指针做成员来实现简单的类,然后构造函数是一个专门的函数。说实话,c实现接口没意义的。你要想实现接口,只有在一个新的struct里面包含一个子struts,然后给新的strut里添加一个函数指针域,这个函数指针指向一个有接口功能的函数~追问

有具体的代码么!

追答

Linux内核里遍地都是这样的代码...

C中的int和OC中的NSInteger区别

在c语言中,int和long的字节数是和操作系统指针所占位数相等。

但c语言中说,long的长度永远大于或等于int

objective-c里,苹果的官方文档中总是推荐用NSInteger

它和int有什么区别呢,stackoverflow这帮大神给了答案。

原来在苹果的api实现中,NSInteger是一个封装,它会识别当前操作系统的位数,自动返回最大的类型。

定义的代码类似于下:

 

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;

typedef unsigned long NSUInteger;

#else

typedef int NSInteger;

typedef unsigned int NSUInteger;

#endif

 

 You usually want to use NSInteger when you don‘t know what kind of processor architecture your code might run on, so you may for some reason want the largest possible int type, which on 32 bit systems is just an int, while on a 64-bit system it‘s a long.

总结:NSInteger与int的区别是NSInteger会根据系统的位数(32or64)自动选择int的最大数值(int or long)。

转:http://blog.csdn.net/freedom2028/article/details/8035847

以上是关于C语言中的接口如何实现?它和函数的定义有什么区别,请C高手来指导,杜绝Java的接口和类的回答因为我精通JAVA的主要内容,如果未能解决你的问题,请参考以下文章

C中的int和OC中的NSInteger区别

c语言问题啊

c语言问题啊啊

c语言中函数定义和声明有啥区别

Traits vs. Interfaces vs. Mixins?

C/C++面试题目总结