ocaml调用C语言函数 ocaml 编译器

vc2010如何使汇编语言调用C语言库函数?

Printf scanf

目前成都创新互联已为上千多家的企业提供了网站建设、域名、虚拟空间、网站托管、企业网站设计、鼓楼网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

应该不能直接调用的。可以写出替代函数,

就以输出为例。将光标定位在下一个位置,向显存输入字符。用足够大的连续的空间存放字符串。

这样做成可以随时调用的子函数就好了。

还可以锻炼自己。

或者是反汇编一下VC的PRINTF 函数。

c语言颜色函数color怎么使用

函数名: textbackground

功 能: 选择新的文本背景颜色

用 法: void textbackground(int color);

程序例:

#include conio.h

int main(void)

{

int i, j;

clrscr();

for (i=0; i9; i++)

{

for (j=0; j80; j++)

cprintf("C");

cprintf("\r\n");

textcolor(i+1);

textbackground(i);

}

return 0;

}

函数名: textcolor

功 能: 在文本模式中选择新的字符颜色

用 法: void textcolor(int color);

程序例:

#include conio.h

int main(void)

{

int i;

for (i=0; i15; i++)

{

textcolor(i);

cprintf("Foreground Color\r\n");

}

return 0;

请问C语言中clock()函数该怎么用?

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。

它的具体功能是返回处理器调用某个进程或函数所花费的时间。函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型。

在time.h文件中,我们可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。

clock的返回值一直是0的原因:

1、编译器优化,for循环实际根本没执行,直接跳过去了,所以时间为0。

2、clock计算的是程序占用cpu的时间,如果你的程序执行的动作很少,那么clock算出的时间也很少。

3、建议使用time gettimeofday函数来计时。

扩展资料:

C语言中clock()函数的程序例1:(TC下运行通过)

#include stdio.h

#include time.h

int main(void)

{

clock_t start, end;

start = clock();

delay(2000);

end = clock();

printf("The time was: %f\n", (double)(end - start) / CLK_TCK);

return 0;

}

说明:CLK_TCK 定义在TC中的time.h中:#define CLK_TCK18.2。

在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。

实际上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。

参考资料来源:百度百科-clock()

c语言如何实现函数的调用

如何调用C语言写的库,如a.lib等,有对应的库头文件a.h。假设a.h中定义了函数:

int

WhyCoding(int

a,

float

b);

做法是,

/*

cpp_a.h

*/

extern

"C"

{

#include

"a.h"

}

/*

cpp_a.h

*/

extern

"C"

{

int

WhyCoding(int

a,

float

b);

/*

重定义所有的C函数

*/

}

从上面可以看出,extern

"C"

是用在C和C++之间的桥梁。之所以需要这个桥梁是因为C编译器编译函数时不带

函数的类型信息,只包含函数符号名字,如C编译器把函数int

a(float

x)编译成类似_a这样的符号,C连接器只要

找到了调用函数的符号,就可以连接成功,它假设参数类型信息是正确的,这是C编译连接器的缺点。而C++

编译器为了实现函数重载,编译时会带上函数的类型信息,如他把上面的a函数可能编译成_a_float这样的

符号为了实现重载,注意它还是没有带返回值得信息,这也是为什么C++不支持采用函数返回值来区别函数

重载的原因之一,当然,函数的使用者对函数返回值的处理方式(如忽略)也是重要原因。

基于以上,C调用C++,首先需要用封装函数把对C++的类等的调用封装成C函数以便C调用,于是extern

"C"

作用是:让编译器知道这件事,然后以C语言的方式编译和连接封装函数.(通常是把封装函数用C++编译器按C++

方式编译,用了extern

"C"

后,编译器便依C的方式编译封装接口,当然接口函数里面的C++语法还是按C++方式

编译;对于C语言部分--调用者,还是按C语言编译;分别对C++接口部分和C部分编译后,再连接就可以实现C

调用C++了).

相反,C++调用C函数,extern

"C"

的作用是:让C++连接器找调用函数的符号时采用C的方式,即使用_a而不是

_a_float来找调用函数。

关于C语言main函数的调用

在C语言中,main函数可被递归调用

在C++标准中,main函数不可以被递归调用

但是许多C++编译器对标准作出了扩展,使得main函数可以被递归调用。

可以用Visual C++做个实验

1)用/Tc编译器选项(使用C编译器),main可以递归调用

2)用/Tp(编译C++)和/Ze(启用语言扩展),main可以递归调用

3)用/Tp(编译C++)和/Za(禁用语言扩展),

main不可以递归调用

另外,根据我的经验,90%的C/C++书籍作者对C/C++并不是完全了解。只有看经典书籍才能在技术细节上没有错误或模糊。

C语言的函数调用和oc的消息机制有什么区别

1对于C语言,函数的调用在编译器的时候决定调用那个函数。编译完之后直接顺序执行。

2OC的函数调用成为消息发送。属于动态调用过程。在编译的时候决不能决定真正调用那个函数(实时证明,在编译阶段,oc可以调用任何函数,及时这个函数并未实现,只要申明过就不会报错,而c语言在编译阶段或报错)。


名称栏目:ocaml调用C语言函数 ocaml 编译器
分享地址:http://ybzwz.com/article/hpjcdg.html