'-std'和'--std'编译器标志之间的区别

时间:2016-02-06 13:23:36

标签: gcc compiler-flags

我注意到-std--std都可用于设置编译标准。在-之前使用--std之间有什么区别?

我用Google搜索并找到了this,但在std之前,似乎没有提到任何关于单个连字符与双连字符的内容。

1 个答案:

答案 0 :(得分:3)

-std=c99没问题,但-std c99是错误的。 --std c99的有效期为--std=c99。这是唯一的区别。

您可以看到它们映射到opts-common.c中的相同操作:

struct option_map
{
  /* Prefix of the option on the command line.  */
  const char *opt0;
  /* If two argv elements are considered to be merged into one option,
     prefix for the second element, otherwise NULL.  */
  const char *opt1;
  /* The new prefix to map to.  */
  const char *new_prefix;
  /* Whether at least one character is needed following opt1 or opt0
     for this mapping to be used.  (--optimize= is valid for -O, but
     --warn- is not valid for -W.)  */
  bool another_char_needed;
  /* Whether the original option is a negated form of the option
     resulting from this map.  */
  bool negated;
};

static const struct option_map option_map[] =
  {
   ...
    { "--std=", NULL, "-std=", false, false },
    { "--std", "", "-std=", false, false },
   ...
  };