C语言怎样建立自己的函数库?

C语言怎样建立自己的函数库?,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

我写了个函数,想弄成库,怎么弄啊?

我只是把它定义到头文件中了,可是不行啊!

编译的时候编译器说是打不开这个头文件!

怎么办啊?

解析:

可以,只要实现文件也加到工程里面就可以了.

注意,工程要包含你的头文件和实现文件,这样你自己的函数库就可以在任何需要的工程中使用了.

可以,只要的程序调用的时候能找到函数的定义就可以了.所谓定义就是函数的具体实现程序.

1、配置ODBC数据源

2、使用SQL函数进行连接。

对于1、配置数据源,配置完以后就可以编程 *** 作数据库了。

对于2、使用SQL函数进行连接,参考代码如下:

#include<windows.h>

#include<sql.h>

#include<sqlext.h>

void main()

{

HENV henv //环境句柄

HDBC hdbc //数据源句柄

HSTMT hstmt //执行语句句柄

unsigned char datasource[]="数据源名称" //即源中设置的源名称

unsigned char user[]= "用户名" //数据库的帐户名

unsigned char pwd[]= "密码" //数据库的密码

unsigned char search[]="select xm from stu where xh=0"

SQLRETURN retcode //记录各SQL函数的返回情况

// 分配环境句柄

retcode= SQLAllocEnv(&henv) // 等介于 SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL

, &henv)

// 设置ODBC环境版本号为3.0

retcode= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0)

// 分配连接句柄

retcode= SQLAllocConnect(henv,&hdbc) // 等介于 SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)

//设置连接属性,登录超时为*rgbValue秒(可以没有)

// SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)(rgbValue), 0)

//直接连接数据源

// 如果是windows身份验证,第二、三参数可以是

,也可以是任何字串

//SQL_NTS 即 "

retcode= SQLConnect(hdbc,datasource, SQL_NTS, user, SQL_NTS , pwd, SQL_NTS )

//分配语句句柄

retcode= SQLAllocStmt(hdbc,&hstmt) // 等介于 SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)

//直接执行查询语句

retcode=SQLExecDirect(hstmt,search,SQL_NTS)

//将数据缓冲区绑定数据库中的相应字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)

SQLBindCol(hstmt, i, SQL_C_CHAR, queryData[i-1], BUFF_LENGTH, 0)

//遍历结果集到相应缓冲区 queryData

SQLFetch(hstmt)

/*

*对遍历结果的相关 *** 作,如显示等

*/

//注意释放顺序,否则会造成未知错误!

SQLFreeHandle(SQL_HANDLE_STMT, hstmt)

SQLDisconnect(hdbc)

SQLFreeHandle(SQL_HANDLE_DBC, hdbc)

SQLFreeHandle(SQL_HANDLE_ENV, henv)

}

int

add(int

x,int

y)

int

sub(int

x,int

y)

int

mul(int

x,int

y)

int

div(int

x,int

y)

#include

<math.h>

#include

<stdio.h>

void

main()

{

int

a,b,c,d,e,f,g,h,i

printf("XXXXXXXXXXXXXXX计算器")

printf("\n")

for(c=1c<=30c++)

printf("*")

printf("\n")

printf("请输入一个整数")

printf("\n")

scanf("%d",&a)

printf("\n")

for(c=1c<=30c++)

printf("-")

printf("\n")

printf("请选择您要做的运算:1.+,2.-,3.*,4./5.abs,6.sqrt")

printf("\n")

for(c=1c<=30c++)

printf("*")

printf("\n")

scanf("%d",&d)

printf("\n")

if(d==5)

{printf("%d",abs(a))goto

end}(如果想做绝对值,就直接做abs函数(它是个库函数).做完后就goto"end"--也就是函数的最后.)

if(d==6)

{printf("%.2f",sqrt(a))goto

end}}(如果想做开平方,就直接做sqrt函数(它是个库函数).做完后就goto"end"--也就是函数的最后.)

printf("请再次输入一个整数")

(如果是做双目的就开始输入第二个数b)

printf("\n")

scanf("%d",&b)

printf("\n")

switch(d)

{

case

1:add(a,b)break

case

2:sub(a,b)break

case

3:mul(a,b)break

case

4:div(a,b)break

default:printf("date

input

error!\n")

}

end:

printf("\n")}

int

add(int

x,int

y)

{

int

m

m=x+y

printf("%d",m)

return

m

}

int

sub(int

x,int

y)

{

int

m

m=x-y

printf("%d",m)

return

m

}

int

mul(int

x,int

y)

{

int

m

m=x*y

printf("%d",m)

return

m

}

int

div(int

x,int

y)

{

int

m

m=x/y

printf("%d",m)

return

m

}

(你试试看吧!应该可以!呵呵)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11670377.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存