【问题标题】:Error with stray ‘\342’ stray ‘\210’ stray ‘\222’ in C program in Linux system call [duplicate]Linux系统调用中C程序中的杂散'\342'杂散'\210'杂散'\222'出错[重复]
【发布时间】:2016-07-13 05:18:51
【问题描述】:

我正在尝试在 Robert Love 的书 Linux system programming, 2nd edition(第 60-61 页)中的 poll 系统调用上做一个示例。我在Ubuntu 14.04 (Trusty Tahr) 上复制粘贴了Code::Blocks 中的示例代码并尝试编译它,但我的代码中出现与杂散'/342'、'/210' 和'/222' 相关的错误。

以下是代码:它在检查 if(ret == -1) 的第 18 行抛出错误

#include <stdio.h>
#include <unistd.h>
#include <poll.h>

#define TIMEOUT 5

/* Poll timeout, in seconds */
int main (void)
{
  struct pollfd fds[2];
  int ret;

  /* Watch standard input for input */
  fds[0].fd = STDIN_FILENO;
  fds[0].events = POLLIN;

  /* Watch standard output for ability to write (almost always true) */
  fds[1].fd = STDOUT_FILENO;
  fds[1].events = POLLOUT;

  /* All set, block! */
  ret = poll(fds, 2 , TIMEOUT*1000);

  if (ret == −1) {
    perror("poll");
    return 1;
  }

  if (!ret) {
    printf ("%d seconds elapsed.\n", TIMEOUT);
    return 0;
  }

  if (fds[0].revents & POLLIN)
    printf ("stdin is readable\n");

  if (fds[1].revents & POLLOUT)
    printf ("stdout is writable\n");

  return 0;
 }

错误是:

/home/eelab/sysprog/pollex/main.c|18| error: stray ‘\342’ in program|
/home/eelab/sysprog/pollex/main.c|18| error: stray ‘\210’ in program|
/home/eelab/sysprog/pollex/main.c|18| error: stray ‘\222’ in program|

现在,我在 Stack Overflow 上遇到了类似的问题,他们提到了转换 ASCII 字符(如引号“”)时可能存在的问题。但是,我再次重写了 IDE 中的所有引号。但它仍然会在检查 if(ret == -1 ) 的行上抛出相同的错误。

【问题讨论】:

标签: c++ c linux systems-programming


【解决方案1】:

上面有无法打印的

if (ret == −1) {

将其替换为-

【讨论】:

  • 谢谢兄弟。它有效:)
  • 更准确地说,是 Unicode 码位 U+2212 (MINUS SIGN)。在大多数文本编辑器中,可以通过正则表达式搜索\x{2212} 来搜索/替换它。
猜你喜欢
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多