#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
/// Global Variables
HANDLE ConsoleHandle;
int RGB (int R, int G, int B); // line 8
int Set_Color (int RGB_Fore, int RGB_Back);
int main (void)
{
// Get Handle
ConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
char Str [32] = "Happy New Year.\n";
printf("%s", Str);
system("pause>nul");
return 0;
}
int RGB (int R, int G, int B) // line 21
{
return (R*4 + G*2 + B);
}
int Set_Color (int RGB_Fore, int RGB_Back)
{
SetConsoleTextAttribute(ConsoleHandle, RGB_Fore*8 + RGB_Back);
}
The TDM-GCC reported:
| line | Message
| 08 | error: expected declaration specifiers or '...' before '(' token
| 21 | error: expected declaration specifiers or '...' before '(' token
Why? How to solve this problem? Thanks
Looks like RGB is a macro, if you rename the function that error will go away. Also Set_Color
needs to return a value you have it defined to return an int
but you fall of the end of the function without returning anything.
If you attempted to use the value of Set_Color
without an explicit return that would be undefined behavior as per the C99 draft standard section 6.9.1
Function definitions paragraph 12:
If the } that terminates a function is reached, and the value of the function call is used by the caller, the behavior is undefined.
and this is undefined in C++ regardless of whether you attempt to use the return value or not.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With