【问题标题】:gcc c Compiler errorgcc c编译器错误
【发布时间】:2017-03-21 08:09:38
【问题描述】:

尝试编译时

#include<stdio.h>

int main(){

printf("Hello World");

return 0;

}

Solaris11 gcc 出现以下错误:

  1. hello.c:4:23:错误:';' 之前的预期表达式令牌

  2. hello.c:6:1: 错误:预期为 ';'在'}'标记之前

Visual C++ 可以编译这段代码。

【问题讨论】:

  • 我对这个问题做了一些修饰。我不知道为什么它不起作用!
  • 无法在 GCC 6.3 上重现:ideone.com/UzYNuE(从问题复制粘贴的代码)- 也许您在某处有一些“不可见”符号?
  • @Bathsheba - 希腊问号浮现在脑海中fileformat.info/info/unicode/char/037e/index.htm
  • @StoryTeller:奇怪的是 MSVC 处理它。
  • 无法在 gcc-5.4.0-1.x86_64 上重现。问题中的源代码不是提供给编译器的源代码的精确复制。 (这不是 OP 的错——不知道 SO 编辑框对粘贴的 Unicode 特殊字符有什么作用。)还有其他可能的问题——gcc 会如何处理不间断空格等?

标签: c gcc


【解决方案1】:

第四行(return 语句)中的 ';' 不是标准的 ';'。

【讨论】:

  • 非标准的';'你用了什么?
  • @Bathsheba 滚回去!
  • 老实说,我没有触及实际代码。这个问题的原始形式质量相当差。
  • @Bathsheba 你甚至没有更正“编译器”错误! ;-) 但也许是故意的——这是一个相当可爱的双关语。
【解决方案2】:

对于天真的读者,您在问题中的内容是有效的 C。

但是,为了实现最大的可移植性,C 编译器可以对允许您在编辑器中键入作为编译候选的字符非常挑剔。

我怀疑文件中的字符不是 ASCII 集的一部分。

我建议你从头开始重新输入代码,只使用 ASCII 字符,然后看着错误消失。

完成此操作后,将其与原始版本“区别”。

【讨论】:

  • 您也可以从问题中复制和粘贴——SO 编辑工具似乎已经清除了那里的任何编码杂质。
猜你喜欢
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多