2016-03-23 35 views
0

'da derleyebilir miyim? Ocilib ve mysql üstbilgilerini kullanan bir C kodum var. Makinemin bazılarında ocilib veya mysql yok, ve kodları başlıklı/başlıksız olarak derlemeyi seçebiliyorum, bunu yapabilir miyim? , kodun ocilib ve mysql içinde tanımlanmış olduğunu söylemelidir, bu yüzden muhtemelen derlerken bunları da dışarıda bırakmak istiyorum.Seçilen üstbilgiler kodunu C

örnek:

#include <regex.h> 
#include <time.h> 
#include <ocilib.h> 


void main(){ 
MYSQL *conn; 
OCI_Connection* cn; 
OCI_Statement* st; 
char *db_type=NULL; 
..... 
.... 
if (strcasestr(db_type,"mysql")){/* mysql */ 
if (!mysql_real_connect(conn, db_host,db_user, db_password, db_schemata, 0, NULL, 0)) { 
     syslog (LOG_NOTICE,"%s\n", mysql_error(conn)); 
     return; 
    } 
.... 
}else{/* oracle*/ 
OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT); 
.... 
} 
} 

ben yeterince açık .. sayesinde oldu umut!

+1

Kodunuzda başlıkları olmadan derlerse, neden bunları ilk sırada eklersiniz? Ama ocilib.h eklemezseniz kod derleme şüpheniz var. –

+0

Bazı makinede neden ocilib yüklü değil ve bazı makinelerde yüklü mysql yok .. – Mojo

+2

Ocilib başlıkları mevcut değilken, ocilib kullanan kod derlemek için nasıl bekliyorsunuz? C derleyicisi mevcut olmadığında C kodunuzu derlemeyi beklemek gibi bir şey. –

cevap

1

Sen seçici etkinleştirmek veya ilgili #include yönergelerin devre dışı derleme için koduna koşullu derleme yönergeleri (#ifdef ... #endif kurallı olmak üzere) ekleyebilirsiniz. @MichaelWalz'ın yorumlarda gözlemlediği gibi, yalnızca üstbilgilerin baskılanması muhtemelen kodun kalan kısmını kırar - eğer yoksa o zaman sadece #include s'yi silmeniz gerekir. Ayrıca, belirli bir ortamda üstbilgileri yoksa, bu üstbilgiler tarafından bildirilen işlevleri içeren kitaplıklara sahip olmadığınız da olası gibi görünüyor. Üstbilgileri dahil ettiğinizi varsayalım, kodunuz bu işlevlerden bazılarına dayanıyorsa, siz derledikten, üstbilgileri veya üstbilgileri derledikten sonra programı bağlayamazsınız.

Koşullu bir derleme çözümü, yalnızca ilgili üstbilgileri de dahil olmak üzere, belirli bir kitaplığın özelliklerine olan tüm bağımlılıkları kaldırmak için kodunuzda ihtiyaç duyduğunuz her yerde kullanırsanız çalışır. Bu yaklaşım nispeten yaygındır, ancak başlangıçta bunun için tasarlanmamış bir sistem üzerine uyarlanması kolay değildir.

+0

tamam, anladım. '# define' ve' # ifdef' ve şimdi her şey çalışır. Teşekkürler çocuklar! – Mojo

İlgili konular