C2061 Syntax error (identifier)

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. 

This is just one .c file in a project. Here is the code:

 #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; } 

Line 51

 bool SaveConfiguration ( Configuration * Config, LPTSTR FilePath ); 
+6
c compiler-errors syntax-error
source share
2 answers

bool not type C.

I suspect the bool somewhere defined.

The same applies to using true and false .

+8
source share

In fact, bool is a valid type (well, actually a macro) in the C99 standard if you are using a recent compiler. You need to add:

 #include <stdbool.h> 

Please note that bool not valid in older versions of ANSI, C89, C90, and other C standards.


As JeremyP noted in the comments, the Microsoft C compiler still does not have proper support for the C99 features.

Which leaves three alternatives:

  • Think of it as C ++, not C; because c ++ has bool as a built-in type
  • Create your own bool implementation
  • Rewrite the code to avoid using bool

For option 2, something like this will work, but this is an ugly job:

 typedef short bool; #define true 1 #define false 0 
+7
source share

All Articles