小编Swa*_*are的帖子

无法在 linux 中编译 Pro*c 代码

我在 C 项目中有一个 pro*C 文件,我正在尝试编译它,但在编译后我没有得到 C 代码。

以下是环境变量:

ORACLE_HOME           = /opt/vgi/oracle/12.1.0.2/client
Run Code Online (Sandbox Code Playgroud)

procTest.pc 文件:

#include <stdio.h>
#include <string.h>
#include <sqlda.h>
#include <sqlcpr.h>


EXEC SQL BEGIN DECLARE SECTION;
VARCHAR uid[30];
VARCHAR pwd[30];
EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE SQLCA.H;

void main()
{
    strcpy(uid.arr,"SCOTT");
    uid.len =strlen(uid.arr);
    strcpy(pwd.arr,"TIGER");
    pwd.len = strlen(pwd.arr);

    EXEC SQL WHENEVER SQLERROR GOTO errexit;
    EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;

    printf("Connected to Oracle8i using Scott/Tiger\n");

    EXEC SQL COMMIT WORK RELEASE;
    return;

errexit:
    printf("Connection failed");
    return;


} 

/* end …
Run Code Online (Sandbox Code Playgroud)

oracle stored-procedures oracle-pro-c

1
推荐指数
1
解决办法
5519
查看次数

C:如何在C中包含多个头文件时避免重新定义类型

我正在重新编译一个C项目,我不知道如何以正确的方式解决这个问题.这是一种情况 -

a.h
---
#ifndef A_H
#define A_H
typedef int INT; 
// other variables and function definition
#endif

b.h
---
#ifndef B_H
#define B_H
typedef int INT;
// other variables and function definition
#endif


main.c
-------
#include "a.h" 
#include "b.h"

int main()
{
    INT i = 10; 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用gcc在Linux中遇到的错误 -

在./main.c中包含的文件中,

./b.h:<linenumber> : error: redefinition of typedef ‘INT’
a.h.h:<linenumber>: note: previous declaration of ‘INT’ was here
Run Code Online (Sandbox Code Playgroud)

由于其他变量和函数,我必须包含两个标头.我没有编写这段代码,但这似乎是在我的solaris环境中编译的,这很奇怪.我该怎么做才能解决这个问题?

c gcc

0
推荐指数
1
解决办法
432
查看次数

标签 统计

c ×1

gcc ×1

oracle ×1

oracle-pro-c ×1

stored-procedures ×1