预期的声明说明符或“......”之前'('令牌?

时间:2013-12-31 16:21:12

标签: c gcc

#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

为什么呢?如何解决这个问题呢?感谢

1 个答案:

答案 0 :(得分:7)

看起来RGB是一个宏,如果你重命名错误将会消失的函数。另外Set_Color需要返回一个你定义的值,以返回int,但是你没有返回任何东西就会掉到函数的末尾。

如果根据C99草案标准部分Set_Color 功能定义段落尝试使用6.9.1的值而没有显式返回undefined behavior 12

  

如果到达终止函数的},则使用函数调用的值   调用者,行为未定义。

无论您是否尝试使用返回值,

并且 C ++ 中的未定义