cgic程序的編寫遇到的問題

cgic程序的編寫 sql

今天使用cgic庫編寫了一些cgi的代碼,結果在編譯的時候出了不少錯誤,在這裏分享出來算是給本身作個筆記,雖然都是小問題可是急需解決的時候仍是很麻煩的. 函數

代碼結構: spa

login_check.h文件聲明 code

login_check.c定義 sqlite

login.c使用login_check.h文件聲明的函數 blog

代碼以下:簡單描述一下,login.c中調用login_check.c實現的函數,其餘就不要深究了. it

/************************************************

* 文件名稱: login_check.h

* 文件描述:

* 文件做者:by Wang.J,in 2013.11.14

* 文件版本:

* 修改記錄:

*************************************************/

#include <sqlite3.h>

#include <stdio.h>

#include <stdlib.h>

sqlite3 * open_db(const char *path);

void close_db(sqlite3 *db);

int login_check(const char *path, const char *usr, const char *pwd);

 

/************************************************

* 文件名稱: login_check.c

* 文件描述:

* 文件做者:by Wang.J,in 2013.11.14

* 文件版本:

* 修改記錄:

*************************************************/

#include 「login_check.h」

/*==================================================

* 函數名稱:

* 函數功能:

* 函數參數:

* 返 回 值:

* 創 建 人:

* 修改記錄:

===================================================*/

sqlite3 * open_db(const char *path)

{

……………………

}

/*==================================================

* 函數名稱:

* 函數功能:

* 函數參數:

* 返 回 值:

* 創 建 人:

* 修改記錄:

===================================================*/

void close_db(sqlite3 *db)

{

……………………………..

}

/*==================================================

* 函數名稱:

* 函數功能:

* 函數參數:

* 返 回 值:

* 創 建 人:

* 修改記錄:

===================================================*/

int login_check(const char *path, const char *usr, const char *pwd)

{

………………………………..

}

 

/************************************************

* 文件名稱: login.c

* 文件描述:

* 文件做者:by Wang.J,in 2013.11.14

* 文件版本:

* 修改記錄:

*************************************************/

#include 「login_check.h」

…………………………………………………….

/*==================================================

* 函數名稱:

* 函數功能:

* 函數參數:

* 返 回 值:

* 創 建 人:

* 修改記錄:

===================================================*/

int Search_DataBase(char *username, char *password)

{

return login_check(SQLITE_OPEN, username, password);

}

…………………………………………………………….

 

沒什麼問題,開始編譯 io

第一個問題:找不到login_check中聲明實現的login_check函數. 編譯

這個是因爲編寫的Makefile文件中login.c在login_check.c前面的緣由,調整一下順序能夠解決. class

第二個問題:缺乏cgiMain:看過cgic庫的各位明白cgic庫在cgic文件中定義了main,而後分別調用各個文件中的cgiMain函數,因此問題也就簡單了,加上一個空的cgiMain函數便可,

int cgiMain()

{

return 0;

}

第三個問題:login.c文件中Search_DataBase函數找不到login_check函數,太喪心病狂了,怎麼可能?而後我又仔細看了一下cgic的實現,發現使用cgic庫以後,每一個文件變得相互獨立沒有聯繫了,因此找不到其餘文件中定義的函數.因此我最後的解決辦法是:將函數的定義與實現所有寫入到.h文件,在其餘須要使用的文件中直接include這個.h文件.修改後以下:

/************************************************

* 文件名稱: login_check.h

* 文件描述:

* 文件做者:by Wang.J,in 2013.11.14

* 文件版本:

* 修改記錄:

*************************************************/

#include <sqlite3.h>

#include <stdio.h>

#include <stdlib.h>

sqlite3 * open_db(const char *path)

{

……….實現………………………

}

void close_db(sqlite3 *db)

{

…………………實現…………………………

}

int login_check(const char *path, const char *usr, const char *pwd)

{

…………………….實現……………………………………

}

login.c文件內容不變.

這是我解決這個問題的方法,若是其餘大俠有什麼更好的解決辦法,歡迎指點.謝謝!

相關文章
相關標籤/搜索