c - 为什么 CodeBlocks 会突出显示关键字 class 并在没有任何错误的情况下编译它(我正在用 C 编程)?

标签 c gcc codeblocks c99 c11

在看了一些教程之后,我试图用 c 语言创建一个类。

我在 youtube 上看到了关于类和对象的视频,代码是用 java 编写的,但讲师说其他语言也一样。我学了一些C语言的基础知识。当我打开 Code::Blocks 并输入“类”时,它突出显示,然后我编译它没有任何错误。我知道 C 不是 OOP 语言,所以它不应该包含类。是的,该文件是一个 .c 文件。

 #include"stdio.h"
  void main(void)
  {
         int sa[5];
         printf("Size : %ld\n",sizeof(sa));
  }
  class;

编译时没有错误,但有一些警告

warning: data definition has no type or storage class
warning: type defaults to ‘int’ in declaration of ‘class’ [-Wimplicit-int]|
||=== Build finished: 0 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|

最佳答案

原因有两个,首先,CodeBlocks 出于某种原因,通过突出显示不是 C 关键字的单词来欺骗您。其次,C 2011 中 C 标准放弃的古老“隐式 int”规则正在编译你的 class; 作为 int class;。我建议,如果您刚开始,应该在编译选项中放置一个 -pedantic-errors -Wall,这样您就可以免受此行为和其他类似行为的影响。

关于c - 为什么 CodeBlocks 会突出显示关键字 class 并在没有任何错误的情况下编译它(我正在用 C 编程)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56937390/

相关文章:

c - Xenomai clock_nanosleep in POSIX skin跳转到Linux Kernel

c - 代码块(GCC编译器)上的段错误,但是在Linux(GNU GCC)中可以

c - 如何在不使用c中的数组的情况下洗牌一副结构牌

c - 初学者从结构数组中删除第一个元素 (C)

使用指针算法将数据从第一个数组复制到第二个数组

linux - 我们可以使用 __libc_stack_end 来确定 linux 上的堆栈结束吗?

c - 无法在 macOS 中链接动态库

macos - MACOSX_DEPLOYMENT_TARGET 和 -mmacosx-version-min 有什么区别?

c - getch(); C 和代码块中的运行时错误

c - 通过将参数传递给函数而导致段错误(C、Linux 上的代码块)