LINUX에서 GCC 컴파일을 이용하여 MSSQL 접속할때 질문입니다.

thumbup7의 이미지

안녕하세요.
이번에 리눅스에서 MSSQL 서버로 쿼리를 날리는 프로그램을 짜고있습니다.

여러 예제를 보다가 제가 처음본 함수구조가 있어서요..
GCC에서는 여러 작업을 안 해본 관계로 함수로 기능을 나누고자 하려고 할때 머리가 아프네요..

gcc -o test test.c -lsybdb 로 컴파일을 하고있습니다.
c 파일 한개만 있습니다.

그러던중

main 함수 이외에 아래의 함수들이 정의가 되어있는데.
static 으로 함수를 c 파일 안에서만 사용가능하도록 했고..
인자값을 받고.. 근데
DBPROCESS *dbproc;
DBINT msgno;
int msgstate;
int severity;
char *msgtext;
char *srvname;
char *procname;
int line;

이런 것들이 쌩뚱맞게 저기 왜있는건지 싶어서요...
정말 궁금합니다..
인자값으로 가던가..
아니면 전역변수로 올리던가..

원래 변수를 전역변수로 올려놓고 여러 함수에서 그것을 사용하고자 하였는데
계속 컴파일 에러가 났는데

gcc 에서 컴파일할때 무슨 요령이 있을거같아서요..

답변.. 부탁드리겠습니다...

====================================================

static syb_msg_handler(dbproc,msgno,msgstate,severity,msgtext,srvname,procname,line)
DBPROCESS *dbproc;
DBINT msgno;
int msgstate;
int severity;
char *msgtext;
char *srvname;
char *procname;
int line;
{
/* ------- msg 출력 routine를 작성한다 ----------- */
}

static int syb_err_handler(dbproc,severity,dberr,oserr,dberrstr,oserrstr)
DBPROCESS *dbproc;
int severity;
int dberr;
int oserr;
char *dberrstr;
char *oserrstr;
{
//함수내용
}

원본 소스코드 첫번째 줄부터 카피해서 올리겠습니다.
참고 부탁드립니다.

====================소스코드==============

#include
#include
#include "sybfront.h"
#include "sybdb.h"
static syb_msg_handler(dbproc,msgno,msgstate,severity,msgtext,srvname,procname,line)
DBPROCESS *dbproc;
DBINT msgno;
int msgstate;
int severity;
char *msgtext;
char *srvname;
char *procname;
int line;
{
/* ------- msg 출력 routine를 작성한다 ----------- */
}
static int syb_err_handler(dbproc,severity,dberr,oserr,dberrstr,oserrstr)
DBPROCESS *dbproc;
int severity;
int dberr;
int oserr;
char *dberrstr;
char *oserrstr;
{
/* ------- err msg 출력 routine를 작성한다 ----------- */
fprintf(stdout,"Severity : %d\nDBerror No : %d - %s\n",severity,dberr,dberrstr);
fprintf(stdout,"OSerror No : %d - %s ",oserr,oserrstr);
dbexit();
}

int main() {
LOGINREC *login; /* login information */
DBPROCESS *dbproc;
char ip_addr[40],ip_port[10];
int i, numCols;
char *teststr[8];

================================================ 이하 main문 중략

raymundo의 이미지

저건 그냥 구식 방식의 파라메터 선언법입니다.

// 신식(?)
int foo(int n) {
    return n*2;
}
 
// 구식
int foo(n)
int n;
{
    return n*2;
}

근데 아마 컴파일러 입장에서 완전히 똑같지는 않을 겁니다. 일부러 인자타입을 불일치하게 호출하도록 해서 경고메시지 나오는 거 보면 타입 프로모션이 일어나는 것 같기도 하고.. 자세한 건 저도 찾아봐야 알겠네요.

암튼 저건 그냥 매개변수 선언한 겁니다.

좋은 하루 되세요!

thumbup7의 이미지

그럼 인자값이니까 다른 함수에서도 너도나도 사용할 수가 있겠네요
감사합니다..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.