atiout 编译错误

atinout compilation error

我一直在尝试 运行 AT 命令项目,并阅读了很多帖子以减轻麻烦。 atinout(C 程序)提供了很多希望。但是当我尝试使用 Turbo C++ 编译它时,出现以下错误:

Turbo C++ Version 3.00 Copyright (c) 1992 Borland International
atinout.c:
Error atinout.c 81: Declaration syntax error
*** 1 errors in Compile ***

实际程序(非常感谢专家 Håkon Løvdal 的制作) 抱歉,我没有把整个代码放在这里。

第 81 行:开始于 static bool tr_lf_cr(const char *s)

/* Replace '\n' with '\r', aka `tr '2' '5'` */
static bool tr_lf_cr(const char *s)
{
char *p;
p = strchr(s, '\n');
if (p == NULL || p[1] != '[=11=]') {
return false;
}
*p = '\r';
return true;
}

user3629249 is spot on with the comment's first suggestion; the problem for tcc is the bool type. Turbo C++ 3.00 is an older compiler that only supports the C language from when it was standardized 于 1990 年("ISO/IEC 9899:1990" aka C89 或 C90),stdbool 头文件和相应的布尔类型于 1999 年引入("ISO/IEC 9899:1999" aka C99)。

要编译代码,您可以在文件开头添加以下内容:

#define bool int
#define true 1
#define false 0

然而,这只会为您提供 运行 在 Intel/AMD 计算机上的二进制文件。您的 android 设备很可能是 运行 一个 ARM CPU,所以为了在 adb shell 中制作一个可以 运行 的二进制文件,您需要用交叉编译器编译它。我自己没有这样做,所以我无法就此提供任何进一步的帮助。


附带说明一下,我正在将 atinout 项目转换为使用 autoconf/automake + gnulib。不是因为我是它的超级粉丝,而是它会支持可移植性问题,比如 stdbool,它在很大程度上是开箱即用的,并且使交叉编译相对容易。但不要屏住呼吸等待这一切完成。