【问题标题】:What does #pragma alloca means#pragma alloca 是什么意思
【发布时间】:2022-01-04 12:52:51
【问题描述】:

以下是来自 GNU Make 软件的代码段。这些行取自 make.h。你能告诉我#pragma alloca 是什么意思吗。#if define (_AIX) 表示代码#pragma alloca应该只运行 AIX 的定义。 make的版本是3.75

/* AIX requires this to be the first thing in the file.  */

#if defined (_AIX) && !defined (__GNUC__)
 #pragma alloca
#endif

请给我一个详细的解释。我正在努力阅读和学习 GNU make 。在哪里可以 我能找到一篇关于 GNU make 内部工作原理的详细文章吗?

#额外

如果您能告诉我如何阅读(任何开源软件的)代码并学习,那将会很有帮助。从代码中学习似乎真的是一项艰巨的任务。非常感谢任何帮助。

【问题讨论】:

  • alloca()not a part of the C standard,但经常出现并且需要使用正确的 #define#pragma 启用。有点像malloc(),但是在栈上分配空间,速度更快,以后不需要显式释放;内存在返回时被释放。关于您的其他观察,学习编码很难,这是准确的,只需要时间、耐心、练习和在需要时提出问题。您似乎走在正确的道路上。

标签: c gnu-make


【解决方案1】:

你能告诉我#pragma alloca是什么意思

它(显然,我刚刚搜索了aix pragma allocameans that on AIX systems, the system C compiler will provide alloca()

#if define (_AIX) 是否意味着代码#pragma alloca 应该只运行在 AIX 上定义了?

是的,确实如此。如果设置了 _AIX 预处理器符号,但未设置 __GNUC__ 符号,则运行代码。

__GNUC__ 将在使用 GCC 时设置,而 #pragma alloca 在 GCC 上不是一个东西。

我正在尝试阅读和学习 GNU make。我在哪里可以找到关于 GNU make 如何在内部工作的详细文章。如果您能指出我如何阅读(任何开源软件的)代码和学习,那将很有帮助。从代码中学习似乎真的是一项艰巨的任务。任何帮助将不胜感激。

您需要选择一个比 Make 更简单的程序。 busybox's implementation of ls呢?

不过,一般来说,您可能想学习如何浏览程序 - 例如,这三个与 AIX 相关的行只是一个小细节,可以这么说,您会陷入困境。

【讨论】:

  • @AXX 非常感谢..我搜索了谷歌但当时没有得到这个...谢谢
  • 是的..这是一个不错的选择..我应该从像 ls 这样的小命令开始...感谢 AKX 的建议..
  • 而且,如果您决定尝试了解 GNU make 的内部工作原理,为什么还要查看 25 年前发布的 GNU make 3.75?
猜你喜欢
  • 1970-01-01
  • 2012-04-28
  • 2011-03-29
  • 2010-12-27
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2017-06-11
相关资源
最近更新 更多