makefile的文件如下
a : main.o conn.o welcome.o
gcc -g -idirafter$(ORACLE_HOME)/precomp/public $^ -o $@ -L$(ORACLE_HOME)/lib -lclntsh -lncurses
main.o : main.c welcome.h
gcc -g -c main.c -o main.o welcome.o : welcome.c welcome.h
gcc -g -c $ < -o $@ conn.o : conn.c conn.h
gcc -g -c -idirafter$(ORACLE_HOME)/precomp/public $ < -o $@
conn.c : conn.pc conn.h
proc config=oracle.cfg conn.pc
:PHONY clean clean :
rm -f *.o
main.c中只调用一个welcome.c的函数 用来显示界面 没有任何数据库操作 有数据库操作的函数都在conn.c中
但是生成的a却会调用conn.c中的函数去连接数据库 提示连接失败 很奇怪 #include <stdio.h>
#include "welcome.h"
int main()
{
welcomelogin();
return 0;
}
a : main.o conn.o welcome.o
gcc -g -idirafter$(ORACLE_HOME)/precomp/public $^ -o $@ -L$(ORACLE_HOME)/lib -lclntsh -lncurses
main.o : main.c welcome.h
gcc -g -c main.c -o main.o welcome.o : welcome.c welcome.h
gcc -g -c $ < -o $@ conn.o : conn.c conn.h
gcc -g -c -idirafter$(ORACLE_HOME)/precomp/public $ < -o $@
conn.c : conn.pc conn.h
proc config=oracle.cfg conn.pc
:PHONY clean clean :
rm -f *.o
main.c中只调用一个welcome.c的函数 用来显示界面 没有任何数据库操作 有数据库操作的函数都在conn.c中
但是生成的a却会调用conn.c中的函数去连接数据库 提示连接失败 很奇怪 #include <stdio.h>
#include "welcome.h"
int main()
{
welcomelogin();
return 0;
}
或者在main中把这一句注释掉,再看看a执行的时候会不会调用连接函数
只要执行到wrefresh(某窗口);
就立刻连接数据库 #include <ncurses.h>
#include "welcome.h"
#include "conn.h"
void print_stdscr()
{
int row=0, col=0;
getmaxyx(stdscr,row,col);
init_pair(1, COLOR_BLACK, COLOR_BLUE);
init_pair(2, COLOR_BLACK, COLOR_WHITE);
init_pair(3, COLOR_WHITE, COLOR_RED);
bkgd(COLOR_PAIR(1));//char str[]="helo";char *p=malloc();
attron(COLOR_PAIR(2));
chgat(-1, A_REVERSE, 0, NULL);
printw( "超市收银系统");
mvchgat(row-1, 0,-1, A_REVERSE, 0, NULL);
//move(row-1,0);
printw( "版本");
attroff(COLOR_PAIR(2));
refresh();
//return stdwin;
}//中间窗口-----------------------------------------
WINDOW *print_centerwin()
{
int row=0, col=0;
getmaxyx(stdscr,row,col);
init_pair(4, COLOR_BLACK, COLOR_WHITE);
WINDOW *centerwin;
centerwin=newwin(12, 40, (row-12)/2, (col-40)/2);
wbkgd(centerwin,COLOR_PAIR(4));
box(centerwin, 0 , 0);
mvwprintw(centerwin, 0, 12, "欢迎进入登录窗口");
mvwprintw(centerwin, 3, 8, "帐号:");
mvwprintw(centerwin, 5, 8, "密码:");
wrefresh(centerwin);
return centerwin;
}
//中间窗口结束-----------------------------------------...代码太长了 就不写了
welcomelogin这边调用打印的函数如 print_centerwin()
delwin(centerwin);
delwin(inputuserwin);
delwin(inputpasswdwin);
delwin(okwin);
delwin(exitwin);
endwin();
return 0;
}