【问题标题】:MinGW doesn't like commentsMinGW 不喜欢评论
【发布时间】:2013-11-05 12:14:27
【问题描述】:

我在 Windows 7 上使用“code::blocks”时遇到了编译问题。我的 C 代码是:

//whatever
 int main(void){return 0;}
//this is blank line

MinGW 命令行是:

gcc.exe -Wall -g -ansi -c C:...\Test\main.c -o obj\Debug\main.o

如果我尝试编译它,我会收到错误:

C:\...\Test\main.c|1|error: expected identifier or '(' before '/' token

(我想在这里发图,但声望不够……)

我的源文件中只有 3 行代码。 (最后只包含\0,但我不知道如何添加空行)。我使用 code::blocks 作为 IDE。我使用notepad++ 搜索不可打印的字符,但没有有意义的结果。我使用MinGW 编译器,它与code::blocks 捆绑下载。我更正了"toolchain executables",编译器到现在都运行良好。

这不是我第一次遇到这个问题。我记得之前在另一台计算机上使用过它,并通过重新输入整个源文件来解决它(我不想每次都这样做)。

引发错误的方式只是在一段时间内注释和取消注释代码(我尝试了一些东西并注释掉了之前的测试)。然后,出乎意料地出现了这个错误。

对不起,如果我的语法不好。英语不是我的母语。

感谢任何给予的帮助! 提前致谢, 尼尔斯

【问题讨论】:

  • "最后一个只包含\0" - 你确定吗?如果它真的是 NUL 字符,那是非法的。您是指换行符 (\n) 吗?

标签: c++ c comments codeblocks mingw32


【解决方案1】:

在代码块中这样做

确保未选中突出显示的选项。(这与上面的 ans. 删除 -ansi. 选项相同。)

Settings->compiler

【讨论】:

    【解决方案2】:

    删除编译器选项-ansi

    ANSI C 不理解//

    来自gcc documentation

    3.4 控制 C 方言的选项

    [...]

    -ansi

    在 C 模式下,这相当于 -std=c90。在 C++ 模式下,相当于 -std=c++98。

    [...] 对于 C 编译器,它禁止识别 C++ 样式 ‘//’ cmets [...]

    【讨论】:

    • 就是这样。非常感谢!
    • 或者,添加选项-std=c99
    【解决方案3】:

    编译c使用

    /* C-style comments!
     */
    

    【讨论】:

    • @H2CO3 c99 是默认选项,可以在项目设置中设置不同的选项。
    • 是的,但很难知道 OP 是否没有发布他的命令行(他最初没有发布)。
    猜你喜欢
    • 2013-05-26
    • 2016-03-24
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多