【问题标题】:Can't comment // on codeblocks不能评论 // 在代码块上
【发布时间】:2013-02-14 11:54:27
【问题描述】:

我正在使用代码块来学习 C 编程。

当我使用/* */ 时,程序可以运行,但是当我使用// 时,程序返回此错误。

expected identifier or ‘(’ before ‘/’ token|

这是 main.c

#include <stdio.h>
#include <stdlib.h>

//Ex1

int i;
float p;
char *n;

int main(void)
{
    i = 22;
    p = 70.0;
    n = "Samuel";

    printf("%s %d %.2f", n, i, p);

    return 0;
}

【问题讨论】:

  • 我们能看到代码块吗?你怎么评价它?
  • 你能把代码的大部分内容都贴出来吗?
  • // 是 C++,而不是 c。也许你正在编译一个 .c 文件,而你的编译器很严格?
  • // cmets 是在 C99 中引入的。将 IDE 配置为使用 C99 或更好的 C2011。
  • @Poldie 不,// 在标准 C 中完全没问题。如果你们只在标准的过时版本中编码,那很好,那是你的问题。但是不要去宣扬关于 SO 的过时标准。

标签: c linux codeblocks


【解决方案1】:

来自维基:

C++ 样式行 cmets 以 // 开头并延伸到行尾。这种注释风格起源于 BCPL,并在 C99 中成为有效的 C 语法;它在原始 K&R C 和 ANSI C 中均不可用:

【讨论】:

    【解决方案2】:

    如果您使用gcc 编译器,则添加-std=c99 编译器参数。 它将启用 C99 功能,例如 // cmets。

    如果您有 -ansi 选项,请将其删除。

    【讨论】:

    • 如果 gcc,// cmets 在默认的 gnu89 模式下可用,因此只需要不明确要求 C89/C90。不过,明确要求 C99 或更高版本是好的。
    【解决方案3】:

    存在四个主要版本的 C 语言:

    • ISO 9899:2011。目前的标准,称为C11。允许 //.
    • ISO 9899:1999。一个过时的标准,称为 C99。允许 //.
    • ISO 9899:1990。过时的标准,称为 C90,有时称为 C89。不允许 //.
    • 预标准化。被称为“K&R C”。不允许 //.

    确保使用支持相关标准的现代编译器。今天,您应该要求 C 编译器至少符合 C99。

    【讨论】:

    • C90 有时被迷糊的人称为“ANSI-C”,因为它是 1989 年在美国标准化的,比国际标准化早一年。但是所有的C标准,包括C90,都是ISO/IEC C。ISO是国际标准协会,IEC是国际电工委员会。这些取代了国家标准机构。在美国的国家出版物中,并且只有在那里,它们可能被称为“ANSI/ISO/IEC 9899:2011”等,但这没有多大意义,因为在美国不需要从英语翻译成母语。在美国以外,ANSI 完全无关紧要。
    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 2014-10-30
    • 2011-07-24
    • 2011-02-09
    • 2011-06-09
    • 2012-02-27
    • 2012-08-04
    • 2012-09-30
    相关资源
    最近更新 更多