Oracle pro * C compiler a GNU C (__builtin_va_list, __attribute__, etc)

hlasů
2

Já kompilaci knihovnu databáze s pro C, který převádí soubor .ppc knihovny do souboru .c, který gcc mohou využít. Nicméně jsem stále hodně chyb v profesionální C jako následující

   PCC-S-02201, Encountered the symbol
__ attribute__  when expecting one of
the `following`

... 

   , Encountered the symbol
__builtin_va_list when expecting one of
the `following`

Chybějící symboly jsou z řetězu standardně obsahuje jako stdio.h a stdlib.h. Jak mohu získat tento problém vyřešit?

Knihovna jsem sestavování pocházel ze starého systému Solaris, že jsme nyní upgradované (v novém systému Solaris 10 systému) a hlavičkové soubory nezdá se, že používání těchto symbolů. např novější .h soubory má

typedef __builtin_va_list va_list

zatímco staré .h soubory má

typedef void* va_list

Existuje mnoho věcí, jako je tato, takže jsem zdráhají jít a opravit všechny z nich ručně pomocí typedef

Položena 18/03/2010 v 03:19
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
4

Změna PARSEparam ve vašem $ORACLE_HOME/precomp/admin/pcscfg.cfgaby PARTIAL- bude používat více uvolněná C rozebrat tak Pro * C nemají nadávat o syntaxi C nerozumí.

Odpovězeno 18/03/2010 v 10:27
zdroj uživatelem

hlasů
0

Můžete jej dosáhnout i bez této direktivy preprocesoru. Pro * C hodnotí makra a nahradí je

#ifdef ORA_PROC
#define __attribute__(x) 
#endif

Já jsem vlastně doma a nemůže ověřit, přesně tak, jak je definován v naší základní kód, budu zkontrolovat a dokončit to, ale je to stejně jako výše.

Aktualizace: tak přesný kód používáme v našem projektu je:

#if defined(ORA_PROC) || !defined(__GNUC__)
#define __attribute__(x)
typedef unsigned long long uint64_t;
typedef          long long  int64_t;
#define INLINE
#endif

Neznámého důvodu preprocesoru není schopen mít 64 bitů typy definované tak jsem definovat přímo tak, že to funguje. Náš projekt je v systému Solaris 9 pro SPARC a my kompilace s GCC 3.3.1 a GCC 3.4.2 a používáme Oracle 10g

Odpovězeno 18/03/2010 v 19:08
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more