3

我正在寻找一个 C 解释器来使用,同时制作一个简单的 C 实用程序以避免一直编译。我按照此处的建议安装了 TCC,但收到警告和错误。如何正确运行 TCC?

$ tcc -run hello.c
.../usr/include/sys/cdefs.h:81: warning: #warning "Unsupported compiler detected"
#if !defined(__GNUC__) || __GNUC__ < 4
#warning "Unsupported compiler detected"
#endif

稍后设置__GNUC__会导致错误:

tcc -D__GNUC__=4 -run hello.c
.../usr/include/i386/_types.h:98: error: ';' expected (got "__darwin_va_list")
#if (__GNUC__ > 2)
typedef __builtin_va_list   __darwin_va_list;   /* va_list */
#else
typedef void *          __darwin_va_list;   /* va_list */
#endif

我的环境:

~$ gcc --version
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin16.7.0

如果 TCC 不适合 macOS,请推荐一个运行良好的 C 解释器。

4

3 回答 3

0

首先,tcc它不是“解释器”,它是一个非常快速的编译器,可用于编译和运行您的 C 代码,就像它是脚本一样。

其次,“检测到不支持的编译器”警告就是一个警告。我一直收到这个警告,我的代码仍然可以编译并且运行没有问题。如果警告困扰您,您可以简单地tcc使用抑制警告的-w选项运行(可能仅在您重新运行您已经知道没有问题的文件时才可取)。

例如,如果您正在运行 C 代码,就好像它是使用tccshebang 行的脚本一样,您可以将其更改为

#!/usr/local/bin/tcc -w -run

tcc在 macOS 上运行时可能会出现一些其他问题。主要是缺少包含文件。在 macOS 上,包含文件可能不会安装到/usr/include/. 有关修复,请参阅此问题。一旦 Xcode 正确安装了头文件,我仍然需要更新我的环境变量才能tcc找到它们。

 export C_INCLUDE_PATH="/usr/include:$C_INCLUDE_PATH"

您可以tcc通过运行查看在哪里寻找标头tcc -vv

于 2020-10-30T02:39:33.330 回答
0

可以肯定的是 CERN 的Cling或任何其他基于 LLVM/Clang 的工具,因为这是 Apple 在 macOS 中使用的。

于 2018-03-27T09:35:20.443 回答
0

您的第一条消息抱怨的行上方的块评论是

/* This SDK is designed to work with clang and specific versions of
 * gcc >= 4.0 with Apple's patch sets */
#if !defined(__GNUC__) || __GNUC__ < 4
#warning "Unsupported compiler detected"
#endif

这很清楚 - 你确实需要 gcc 或 clang。幸运的是,这两个编译器都非常易于安装 - 使用https://www.macports.org

我不会打扰 C解释器- 它不是解释语言。

于 2018-03-27T09:36:48.687 回答