声明者是否可能没有声明说明符?

时间:2013-07-19 17:37:56

标签: c declaration specifier

关于声明;

  

C和C ++中的每个对象声明都有两个主要部分:一个零或多个声明说明符的序列,以及一个或多个声明符的序列,用逗号分隔。   例如:
  enter image description here

零指示符是否将名为a的变量声明为

a;

而不是

int a;

? 我试着用一个例子

#include <stdio.h>

int main(){
     x = 9; 
     printf("%d\n", x);

return 0; 
}  

这是一个错误:

[Error] 'x' undeclared (first use in this function) 

2 个答案:

答案 0 :(得分:2)

在c89中可以使用隐式int规则,但至少需要一个限定符或存储类说明符。

auto x = 3;   /* allowed in c89, not valid in c99 */

static y = 4; /* allowed in c89, not valid in c99 */

const z = 5;  /* allowed in c89 , not valid in c99*/

a;      /* not valid in c89, c99 without a prior declaration */

b = 6;  /* not valid in c89, c99 without a prior declaration */

答案 1 :(得分:1)

无论你从哪里得到这个陈述,都是错的。您必须至少有一个声明说明符才能使声明有效。这是标准中的相关位(这是一个图像,因为我不能使降价行为):

C11 standard about declarations