问题标签 [function-attributes]
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.
c++ - 不同编译器中的纯/常量函数属性
pure是一个函数属性,表示函数不会修改任何全局内存。
const是一个函数属性,表示函数不读取/修改任何全局内存。
鉴于这些信息,编译器可以进行一些额外的优化。
GCC 示例:
在该示例中,编译器可以将函数计算优化为:
或者,如果您的编译器足够聪明(并且对浮点数不那么严格):
如何以这种方式为不同的编译器标记函数,即 GCC、Clang、ICC、MSVC 或其他?
python - 使用函数属性存储延迟(潜在)处理的结果
我正在做一些碰撞检测,我非常想在两个不同的上下文中使用相同的函数。在一种情况下,我希望它类似于
在另一个方面,我希望它是
我真的很讨厌在这里写两个函数的想法。只是保持他们的名字直截了当是一个岔路口,而使碰撞检测的界面复杂化是另一个问题。所以我在想:
现在,当我只想进行检查时,我可以说:
或者
在我真正想要检查它们的其他上下文中,我可以这样做:
在这两种情况下,我都不会做比我需要的更多的处理。
我认识到这比前两个函数的代码更多,但它也具有以下优点:
将我的碰撞检测界面保持为一棵树,节点位于顶层而不是中间层。这似乎更简单。
用一个方便的窥视功能连接自己。如果我再次使用它,那么我实际上会编写更少的代码。(回应YAGNI,如果我有,我会的)
所以。如果你是众所周知的杀人狂,知道我住在哪里,如果我写了上面的代码,我会期待你的来访吗?如果是这样,您将如何处理这种情况?
objective-c - 如何用返回类型标记一个函数不返回?
如果我在返回某些内容的函数中没有返回任何内容,编译器将警告该函数没有返回任何内容。
但是如果我调用abort()
函数,编译器不会发出警告。我怎样才能像这样标记自己的功能。
c++ - 如何将 GCC 的 printf 格式属性与 C++11 可变参数模板一起使用?
我有一个 C++ 类,它是日志系统的前端。它的日志功能是使用 C++11 的可变参数模板实现的:
每个日志记录后端都实现了自己的版本true_log
,除其他外,它使用转发的参数来调用vsnprintf
。例如:
一切都很好,我很高兴。
现在,我想对log()
参数添加一个静态检查:具体来说,我想使用 GCC 的 printf 格式属性。
我首先使用标记log()
函数__attribute__ ((format (printf, 2, 3)))
(与this
第一个“隐藏”参数一样,我需要将参数索引移动一个)。这不起作用,因为如果失败并出现编译错误:
然后,我尝试将相同的属性添加到true_log()
函数中。它编译,但实际上没有执行错误检查:我试图传递给log()
一些无效的格式/变量组合,并且没有发出警告。也许这种检查“为时已晚”,或者换句话说,关于变量的信息已经在调用链中丢失了?
作为最后的手段,如果我log()
用注释__attribute__ ((format (printf, 2, 0)))
,我会收到有关错误格式字符串的警告,但不会针对无效的格式/变量组合发出诊断。
总结问题:如果我使用 C++11 的可变参数模板,如何从 GCC 进行完整的格式检查?
c - 解释 force_align_arg_pointer 函数属性
来自GCC 文档
在 Intel x86 上,该
force_align_arg_pointer
属性可以应用于单个函数定义,生成一个替代prologue
并epilogue
重新对齐runtime stack
. 这支持将使用 4 字节对齐堆栈运行的旧代码与保留 16 字节堆栈的现代代码混合使用SSE compatibility
。交替序幕和尾声比常规序幕更慢且更大,并且交替序幕需要scratch register
; 如果与regparm attribute
. 该force_align_arg_pointer
属性与嵌套函数不兼容;这被认为是一个硬错误。
具体来说,我想知道什么是序言、尾声和 SSE 兼容性?
python - 装饰器设置函数的属性
我希望仅当登录用户具有所需的权限级别时才能执行不同的功能。
为了让我的生活更简单,我想使用装饰器。下面我尝试permission
在“装饰”功能上设置属性 - 如下所示。
但是当我这样做时:
我收到一个错误'function' object has no attribute 'permission_required'
我错过了什么?
attributes - 如何指定 GNU C 的属性?
在GUN C 手册6.30 Declaring Attributes of Functions中,它指出:
您还可以
__
在每个关键字之前和之后指定属性。这允许您在头文件中使用它们,而不必担心可能的同名宏。例如,您可以使用__noreturn__
代替noreturn
.
这是否意味着用户可以指定自定义属性?或者还有什么?我肯定很困惑,有人可以帮忙,或者给我一些样品吗?
llvm - LLVM 如何将 Attributes::NoUnwind 设置为 Function?
我认为这是一个非常简单的问题,但我无法解决。很伤心。所以。当我做
我用这段代码得到了有趣的 test.cpp:
但是当我想写字符串时PAWI.Attrs = Attribute::None | Attribute::NoUnwind;
在我的项目中,出现错误 IntelliSense: no operator "=" matches these operands operand types are: llvm::Attributes = int
我需要做什么?包括所有必要的标题。[操作系统 - Windows 7 x64,LLVM - 3.2]
objective-c - Objective C 中的不可用属性是什么意思?
Objective C 中的不可用属性有什么作用?
Clang 中是否有任何关于此属性和其他属性的在线参考?
c++ - 函数属性返回_两次
我只是在查找 gcc 的功能属性(http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html)并遇到了该returns_twice
属性。
而且我完全不知道在什么情况下函数可以返回两次......我快速查找了提到的内容vfork()
,setjmp()
但继续不知道适用场景的外观 - 你们中的任何人都使用过它或可以解释一下吗?