"C"

2012-05-05 7 views
6

Dışında cout/endl kullanamazsınız. Umarım birileri bana hiçbir yerde bulamadığım için bu küçük problemde bana yardımcı olabilir. Birincisi, heres kodu: Beni std maddeyi kullanma izin vermez"C"

#include<string> 
#include<iostream> 
#include<Windows.h> 

using namespace std; 

extern "C" 
{ 
#include<hidsdi.h> 
#include<SetupAPI.h> 
} 

int main() 
{ 
    int iQuit; 

    cout << "Testing Program" << endl; 

    return 0; 
} 

(yani cout, cin, endl vs). Tüm harici "C" kodunu çıkardığımda kullanmamı sağlayacak ... Neden böyle? Ve bunun etrafında bir yolu var mı?

DÜZENLEME: Üzgünüm, size tam hatayı anlatmak için unutmak: Bu tanımlayıcı "cout" senin o derleme ortamı ile sorun var

Teşekkür

+0

... Çok garip ... şimdi çalışıyor. Ad alanını kullanarak std; ana içeride. – ervinbosenbacher

+0

extern "C" 'nin amacı nedir? –

+0

Çünkü cout bir C anahtar kelimesi değil, bir C++ singleton örneğidir. C++ nesnelerine düz C kodundan erişemezsiniz (ancak başka bir şekilde mümkün olsa da). –

cevap

0

Sorunu öğrendim, dizinleri doğru sırada VC++ Dizinleri'ne eklemiyordum.

sırası olması gerekir:

C: \ winddk \ 7600.16385.1 \ inc \

$ (VCInstallDir)

$ (VCInstallDir) içerir DDK atlmfc \ içerir

Cı : \ winddk \ 7600.16385.1 \ inc

$ (WindowsSdkDir) içerir \ api

$ (FrameworkSDKDir) \ bu sırada olması gerekiyor neden

Bilmiyorum içerir, ancak ben küresel zaten std kullanmak ister

+0

sürücü gelişimi derlenir. Sürücü gelişimi farklıdır. C dilinde kod yazmalısınız ve hangi başlıkları dahil ettiğinize dikkat etmelisiniz. Yalnızca üst düzey üstbilgileri, ör. ntddk.h –

+0

@DavidHeffernan Tavsiye için teşekkürler :). C 'de şoförler yazmayı sürdürdüğünü biliyorum, ama C++' da yazmak gerçekten çok mu kötü? – Danny

+2

Evet öyle. C++ kodunuz bir istisna oluşturduğunda ne yapacaksınız? Bu bir şoförde hoş değil. Ve başka endişeler var. Bir web araması beni şu tartışmaya yönlendirdi: http://msdn.microsoft.com/en-us/windows/hardware/gg487420 –

3

tanımlanmamış söylüyor. Bu kodda yanlış bir şey yok. Derler ve iyi çalışır. sorusuna bir açıklama olarak

diyorsunuz:

I'm learning to write a driver so I can do stuff with my devices like keyboards and mouses, so I'm using the WDK. Correct me if I'm wrong, but I thought you need to use extern "C" to use those header files?

Aslında sadece sürücü geliştirme için C++ yerine C kod yazmak gerekir.

+0

hmm ... kodu C: S olarak derleyeceğinizi asla bilmiyordum. Nasıl kontrol ederim? : S – Danny

+0

Nasıl derliyorsunuz? Hangi derleyici ve hangi komut satırı seçeneği? Ve dosyanın adı nedir? Özellikle uzantı nedir. –

+0

Visual Studio 2010 kullanıyorum. Dosya adı Mainframe.cpp – Danny