2015-10-08 1 views
1

J'essaie d'utiliser le didacticiel de Microsoft ici pour configurer une connexion COM pour la programmation WMI. J'ai légèrement modifié l'exemple de code pour l'adapter à mon style. Mon code est jusqu'à présent comme suit:Problème avec l'affectation de HRESULT à l'aide de CoInitializeEx

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

#define _WIN32_DCOM 

#pragma comment(lib, "wbemidl.lib") 

HRESULT hRes; 
hRes = CoInitializeEx(0, COINIT_MULTITHREADED); 

if(FAILED(hRes)) 
{ 
    std::cout << "COM initializtion failed." << std::endl; 
} 

Ma question apparaît sur l'affectation à:

hRes = CoInitializeEx(0, COINIT_MULTITHREADED); 

Je vois squiggly un peu rouge, donc je le vérifier et il dit:

Error: this declaration has no storage class or type specifier

Je n'ai aucune idée de ce que le problème est que je n'ai pas vraiment fait C++ dans un moment, alors je pourrais me faire une erreur stupide. Certains googling m'ont conduit à une question SO qui disait que le type n'était pas défini car l'en-tête correct n'avait pas été inclus, mais (corrigez-moi si je me trompe) je pensais que HRESULT était défini dans Windows.h.

Quelqu'un peut-il voir un problème avec ce code? Il est une application console Win32 et je suis en utilisant Visual Studio 2015.

+1

Vous semblez essayer de mettre des instructions en dehors d'une fonction? Vous ne pouvez pas faire cela en C++. Tout code qui fait quelque chose doit être dans une fonction. – immibis

+0

@immibis "_Vous ne pouvez pas faire cela en C++ _" En fait, vous pouvez le faire sous des formes rudimentaires :-). Considérons 'HRESULT hRes = CoInitializeEx (0, COINIT_MULTITHREADED);' – AlexD

Répondre

1

Ci-dessous le code doit aller à l'intérieur d'une fonction ..

HRESULT hRes; 
hRes = CoInitializeEx(0, COINIT_MULTITHREADED); 

if(FAILED(hRes)) 
{ 
    std::cout << "COM initializtion failed." << std::endl; 
} 

Vous ne pouvez pas écrire du code en dehors fonction. Vous pouvez écrire des déclarations mais pas le code lui-même, c'est précisément ce que l'erreur indique *This declaration has no storage class or type specifier*.