因为工作上使用的平台是Qt,并想着用Qt来调试C语言。
在了解到C++、C语言混合编程可以提高效率后。觉得学习一下如何用Qt调用C语言函数。
在学习了相关资料后,发现在Qt中添加.c文件和添加.cpp都是一个方法,只需要将后缀.cpp更改为.c即可。
我们直接运用第五天学习的二分查找为例,写出如下C语言函数。
int ercheck (int x)
{
int c[]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof (c)/sizeof (c[0]);
int left=0;
int right=sz-1;
while (left<=right)
{
int mid=(left+right)/2;
if(c[mid]>x)
{
right=mid-1;
}
else if(c[mid]<x)
{
left=mid+1;
}
else
{
return mid;
}
}
return -1;
}
当然,为了更好的调用该函数,我们需要在Qt项目中为这个.c文件新增一个头文件。
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
#include <stdio.h>
#include <windows.h>
int ercheck (int x);
#ifdef __cplusplus
}
#endif //__cplusplus
然后在Qt的项目中添加#include “cerfencheck.h”
即可直接调用该函数。
但是在调试其他函数时遇到一个问题,就是在VS环境下,#include <windows.h>后,在.c文件中调用Sleep函数是,是正常的,Sleep后面的参数是毫秒。
但是在Qt中的.c文件这样写会报错。而用sleep函数可以运行,但是首字母小写的sleep后面带的参数是以秒为单位计算。