我在 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) 我正在重新编译一个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环境中编译的,这很奇怪.我该怎么做才能解决这个问题?