问题标签 [tcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
569 浏览

windows - Error when including Windows.h with TCC

What I really wanted to do was to include Ws2tcpip, so I followed the instructions in the answers from this thread, copied MinGW's include files to \tcc\include\winapi\ and created a library from wsock2.dll. But the problem I get now is when I include Windows.h.

which is

So how do I get the winapi to work with tcc?

Thanks

0 投票
2 回答
1310 浏览

c - 使用 C99 中的库在 Windows 上使用 TCC 编译文件

所以最新版本的 TCC 据说实现了 C99 的一些功能,但是我发现它不包含 C99 的数学库。

有没有办法让它在 Windows 上使用更多的 C99 库?我四处搜索,发现了一些主要与 Linux 有关的建议,但对于这个项目,我需要让它在 Windows 上工作。

编辑:这不是关于在 Windows 平台上获取“任何”编译器的问题。我意识到有很多编译器。我特别需要让 TCC 来做这件事。

编辑:该项目需要进行一些即时 C 编译,我们想看看我们是否可以使用 TCC 来实现此功能。

0 投票
0 回答
88 浏览

c - 将 VC++ .LIB 文件转换为 .DEF 文件

我在编译 OpenGL 应用程序时遇到问题,我发现我使用了错误的 GLEW 库。但我找不到 .def 格式的 GLEW 静态库。有谁知道我如何制作定义文件或者我可以找到一个?

0 投票
1 回答
245 浏览

c - TCC 错误:索引太大

我一直在玩光线投射,并决定使用 3D 阵列来制作关卡,但是 TCC 吐出了这个:

数组的大小是否有限制?代码:

0 投票
2 回答
985 浏览

c++ - 编译的 gcc 和 tcc 结构的兼容性

我正在尝试从 C++ 运行 libtcc 以使用 C 作为运行时脚本语言。运行时编译的代码必须能够从外部代码运行函数。这在传递整数时工作正常,但是当将结构从 tcc 代码传递到 gcc 代码时,会发生奇怪的事情。

最小运行示例:

运行:

为什么 gcc 编译后的版本不打印预期的 0?当我只将long longs 而不是 int 放入结构时,它可以工作。输出任何其他数据类型和随机内容。

起初我认为这是因为对齐或其他原因,但在结构中仅使用单个变量时也会发生这种情况。

我正在使用 Linux 3.16 x86_64 和 tcc 0.9.26

0 投票
1 回答
530 浏览

c++ - 如何在 C++ tcc 中隐藏 Windows 控制台

如何隐藏控制台窗口,编译器很小 C

0 投票
1 回答
1122 浏览

c - 微型 C 编译器臂

我想在运行时为 iOS 和 Android 编译和运行 C 代码。Tiny C 编译器可以在 arm64 和 armv7 上运行吗?如果可能的话,我该如何设置 XCode 和 android 项目来运行 Tiny C 编译器?

0 投票
3 回答
628 浏览

c - tcc 中的打包结构

我正在尝试在 tcc C 编译器中进行打包结构。代码如下,应该支持__attribute __标签:

它适用于 gcc,但不适用于 tcc。我还尝试了 __attribute __((packed)) 和其他一些测试 - 没有一个有效。

0 投票
1 回答
215 浏览

command-prompt - 如何将 Tiny C 编译器的输出保存到文件中?

我想保存名为 tcc 的 C 编译器的输出。尝试在 Windows 7 命令提示符中使用重定向,但它会生成一个空文件并将输出写入命令提示符。

这是我在命令提示符中使用的:

0 投票
4 回答
1997 浏览

c - 如何坚持 C 编译器将局部变量放在堆栈中,而不是在寄存器中

我正在尝试将历史功能语言解释器(EMAS 的 KRC)移植到现代系统(Unix 的 C),它有一个垃圾收集器,希望能够扫描堆栈以查找指向堆的指针,以了解它必须重新定位哪些指针在 GC 期间移动堆中的对象时。为此,必须在堆栈中找到所有指向堆的函数参数和局部变量。

现在,有一段时间,“register”关键字的意思是“如果你愿意,你可以把这个变量放在寄存器中”,否则它就在堆栈上,但现在所有(GCC、Clang、Tinyc/tcc)C 编译器似乎无论如何都将局部变量放入寄存器中,无法禁用此行为,结果是 GC 丢失了一些属于正在进行的函数的值,未能保存它们并破坏了堆。

有没有办法告诉任何这些编译器使用原始的 C 语义,除非你说“注册”,否则所有局部变量都在堆栈上?

我有一些棘手的“解决方案”:

  • 在任何地方添加额外的代码来获取每个面向堆的局部变量的地址并将其传递给一个虚拟函数,作为强制它位于内存位置的一种方式;
  • 使所有静态函数全局化,以避免函数内联和由此产生的内联函数参数的优化;
  • 将所有机器寄存器压入堆栈的存根将 GC() 函数括起来,调用真正的 GC() 函数,然后将它们弹出;

这一切似乎都改善了问题,但非常老套且不可靠。

有没有更好的方法来实现所需的结果,确保所有函数参数和局部变量都在堆栈上?