#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);
}
TDM-GCC报道:
| line | Message
| 08 | error: expected declaration specifiers or '...' before '(' token
| 21 | error: expected declaration specifiers or '...' before '(' token
为什么呢?如何解决这个问题呢?感谢
答案 0 :(得分:7)
看起来RGB是一个宏,如果你重命名错误将会消失的函数。另外Set_Color
需要返回一个你定义的值,以返回int
,但是你没有返回任何东西就会掉到函数的末尾。
如果根据C99草案标准部分Set_Color
功能定义段落尝试使用6.9.1
的值而没有显式返回undefined behavior 12 :
无论您是否尝试使用返回值,如果到达终止函数的},则使用函数调用的值 调用者,行为未定义。
并且 C ++ 中的未定义。