2010-09-02 23 views
6
1>cb.c(51): error C2061: syntax error : identifier 'SaveConfiguration' 
1>cb.c(51): error C2059: syntax error : ';' 
1>cb.c(51): error C2059: syntax error : 'type' 
1>cb.c(52): error C2061: syntax error : identifier 'LoadConfiguration' 
1>cb.c(52): error C2059: syntax error : ';' 
1>cb.c(52): error C2059: syntax error : 'type' 
1>cb.c(122): error C2061: syntax error : identifier 'SaveConfiguration' 
1>cb.c(122): error C2059: syntax error : ';' 
1>cb.c(122): error C2059: syntax error : 'type' 
1>cb.c(127): error C2061: syntax error : identifier 'LoadConfiguration' 
1>cb.c(127): error C2059: syntax error : ';' 
1>cb.c(127): error C2059: syntax error : 'type' 
1> 
1>Build FAILED. 

यह परियोजना में केवल एक .c फ़ाइल है। कोड यह रहा:सी 2061 सिंटेक्स त्रुटि (पहचानकर्ता)

#define WIN32_LEAN_AND_MEAN 

#include <Windows.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <process.h> 
#include <tchar.h> 

typedef struct _Configuration 
{ 
    int    KeyActivate; 
    int    BlockWidth; 
    int    BlockHeight; 
    double   HueStart; 
    double   HueEnd; 
    double   SaturationStart; 
    double   SaturationEnd; 
    double   ValueStart; 
    double   ValueEnd; 
} Configuration; 

typedef struct _DIBSection 
{ 
    HDC  ScreenDC; 
    HDC  WindowDC; 
    HDC  MemoryDC; 
    HBITMAP ScreenBMPHandle; 
    BITMAP ScreenBMP; 
} DIBSection; 

typedef struct _Thread 
{ 
    HANDLE  Handle; 
    unsigned Id; 
} Thread; 

typedef struct _Window 
{ 
    HANDLE Handle; 
    HDC  DC; 
    int  Width; 
    int  Height; 
    int  Top; 
    int  Left; 
} Window; 

__declspec (dllexport) int Initialize (void); 
unsigned __stdcall Start (void * Arguments); 

void LoadDefaultConfiguration (Configuration * Config); 
bool SaveConfiguration (Configuration * Config, LPTSTR FilePath); 
bool LoadConfiguration (Configuration * Config, LPTSTR FilePath); 

Thread   MainThread; 
Window   Screen; 
Configuration Settings; 

BOOL WINAPI DllMain (HINSTANCE Instance, DWORD Reason, LPVOID Reserved) 
{ 
    switch (Reason) 
    { 

     case DLL_PROCESS_ATTACH: 

      // TODO: Load settings from file 
      LoadDefaultConfiguration (& Settings); 

      // Create main thread 
      MainThread.Handle = (HANDLE) _beginthreadex (
       NULL, 
       0, 
       Start, 
       NULL, 
       0, 
       & MainThread.Id 
       ); 

      if (MainThread.Handle) 
      { 
       SetThreadPriority (MainThread.Handle, THREAD_PRIORITY_BELOW_NORMAL); 
      } 
      else 
      { 
       MessageBox (NULL, L"Unable to create main thread; exiting", L"Error", MB_OK); 
       ExitProcess (0); 
      } 

      break; 

     case DLL_PROCESS_DETACH: 

      break; 

    } 

    return TRUE; 
} 

__declspec (dllexport) int Initialize (void) 
{ 
    return 1; 
} 

unsigned __stdcall Start (void * Arguments) 
{ 
    return 1; 
} 

void LoadDefaultConfiguration (Configuration * Config) 
{ 
    Config->BlockHeight = 50; 
    Config->BlockWidth = 100; 
    Config->HueEnd = 0.00; 
    Config->HueStart = 0.00; 
    Config->KeyActivate = VK_SHIFT; 
    Config->SaturationEnd = 0.00; 
    Config->SaturationStart = 0.00; 
    Config->ValueEnd = 0.00; 
    Config->ValueStart = 0.00; 
} 

bool SaveConfiguration (Configuration * Config, LPTSTR FilePath) 
{ 
    return true; 
} 

bool LoadConfiguration (Configuration * Config, LPTSTR FilePath) 
{ 
    return true; 
} 

लाइन 51

bool SaveConfiguration (Configuration * Config, LPTSTR FilePath); 
+0

यह त्रुटि पारस्परिक रूप से निर्भर शीर्षलेख फ़ाइलों के कारण हो सकती है। – Grault

उत्तर

8

bool एक सी प्रकार नहीं है।

मुझे संदेह है कि BOOL कहीं परिभाषित किया गया है।

true और false के उपयोग के लिए ही चला जाता है।

+0

विश्वास नहीं कर सकता कि मुझे याद आया, मैं इसे शुरू करने से ठीक पहले सी ++ कर रहा था, धन्यवाद। –

+0

@ गिटार-: सही जवाब स्वीकार करने के लिए मत भूलना – abatishchev

+0

सी 99 में अपनी सारी महिमा में 'बूल' है। विंडोज और उसके बुलियन (और लुकलाइक्स) पर एक अच्छा लिंक यहां है: http://blogs.msdn.com/b/oldnewthing/archive/2004/12/22/329884.aspx – dirkgently

7

दरअसल, bool सी 99 मानक में एक मान्य प्रकार (ठीक है, वास्तव में एक मैक्रो) है, मानते हुए कि आप हालिया कंपाइलर का उपयोग कर रहे हैं। आप जोड़ने की जरूरत:

#include <stdbool.h> 

ध्यान दें कि bool बड़े एएनएसआई, C89 में मान्य नहीं है, सी मानकों का C90 आदि वेरिएंट।


टिप्पणियों में जेरेमीपी द्वारा हाइलाइट किए गए अनुसार, माइक्रोसॉफ्ट के सी कंपाइलर में अभी भी सी 99 सुविधाओं के लिए उचित समर्थन नहीं है।

कौन से तीन विकल्प छोड़ देता है:

  1. सी ++, नहीं सी मानते हैं, क्योंकि सी ++ bool के रूप में एक अंतर्निहित में टाइप
  2. अपनी खुद की bool कार्यान्वयन बनाएं
  3. फिर से लिखना bool

का उपयोग कर विकल्प 2 कुछ इस तरह काम करेगा के लिए से बचने के लिए कोड है, लेकिन यह एक बदसूरत काम है -अराउंड:

typedef short bool; 
#define true 1 
#define false 0 
+1

वह हालिया कंपाइलर का उपयोग नहीं कर रहा है, वह इसका उपयोग कर रहा है माइक्रोसॉफ्ट विजुअल सी जो सी 99 का समर्थन नहीं करता है। – JeremyP

+0

अच्छा बिंदु। मुझे लगता है कि माइक्रोसॉफ्ट ने पिछले दशक में किसी भी समय इसे जोड़ा होगा, लेकिन सी ++ 0x पर उनके प्रयासों पर ध्यान केंद्रित करने के बजाय, वे सी 99 को अनदेखा करने के लिए (कुछ पढ़ने के बाद) दिखाई देते हैं। – Simon

संबंधित मुद्दे