- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我知道这两者之间的区别,我已经查看了手册。
我还是有些困惑。我可以在类的方法中使用 __FUNCTION__
,这代表这个方法的名称。当我回应它时,它只输出名称。这里很清楚。
但为什么我可以在非 calss 方法中使用 __METHOD__
。这也只是代表正常功能的名称。正常功能是在某个容器中吗?而在正常函数中回显__METHOD__
时,容器什么都没有?
代码:
<?php
class dog {
private $name = 'dog';
public static function name() {
echo __METHOD__;
echo"\n";
echo __FUNCTION__;
echo"\n";
}
}
function test() {
echo __FUNCTION__;
echo"\n";
echo __METHOD__;
}
dog::name();
test();
输出:
ei@localhost:~$ php test.php
dog::name
name
test
test
任何帮助将不胜感激。谢谢。
最佳答案
“方法”基本上只是类(或类函数)中函数的名称。因此 __METHOD__
由类名和调用的函数名组成(dog::name
),而 __FUNCTION__
只给你函数名没有提及它可能所在的类。
当 __METHOD__
在类外调用时,它与 __FUNCTION__
相同,因为没有类部分用作前缀。您可以在类之外使用 __METHOD__
,因为它是一个神奇的常量并且它们始终可用(在最坏的情况下它们将返回空字符串)。
关于php - __METHOD__ 和 __FUNCTION__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41354898/
使用: #define DEBUG_FOO(foo) fprintf(stderr, "foo is %x, currently in %s\n", foo, __FUNCTION__); 将打印:
我正在尝试添加一个编译局部变量的 c 宏它被初始化为函数名.. 例如。 void foo (void) { stubmacro; } void bar (void) { stubmacr
__FUNCTION__ 不是字符串文字吗?我一直认为它是 - 沿着 __FILE__ 的路线,但我刚刚发现我不能将字符串文字相邻地连接到它。如果它不是字符串文字,它被定义为什么?我无法让 cscop
如果我问的是一个明显的问题,请原谅我,但是在经历了一堆线程并尝试了一些东西之后,我无法确定这个简单的事情。 我有这个小程序: #define FUNC_PREFIX __FUNCTION__ "()
是否有像 __FUNCTION__ 或 __func__ 这样的编译时常量,其中还包括类方法的类名? 例如,对于 Bar 类中名为 foo 的方法,它不应扩展为 foo,而应扩展为 Bar::foo.
Simlar question with LINE 但是当我用 __FUNCTION__ 替换 __LINE__ 时。宏连接字符串文字“__FUNCTION__”而不是实际的函数名称。 最佳答案 __
Simlar question with LINE 但是当我用 __FUNCTION__ 替换 __LINE__ 时。宏连接字符串文字“__FUNCTION__”而不是实际的函数名称。 最佳答案 __
示例: @noreturn func setOnlyPropertyGetterError(__function__: String) { fatalError("\(__function__)
我定义了一个宏如下: #define ADD_TIME_ENTRY(_name_) m_pTimeMeasurement->addTimeEntry(_name_); 现在,我想通过 ADD_TI
我有一个带有 Windows 运行时组件项目的 Windows Phone 8 解决方案。在 WinRT 代码中,我想使用 __FUNCTION__ 从 C++ 类进行日志记录。但是,__FUNCTI
我有一个 C++ 库,它通过 crtdefs.h 使用预定义的宏 __FUNCTION__。宏已记录 here .这是我的用法: 我的.cpp #include ... void f() {
我发现以下代码可以将日志添加到系统日志中。但是,如果我还想将 __FUNCTION__ 信息添加到系统日志,该怎么做? openlog(basename(argv[0]), LOG_CONS | LO
使用 avr-gcc 可以将数据存储在程序内存中以节省 RAM。这是使用 PROGMEM attribute 完成的. AVR-libc 还提供了一个宏,PSTR() ,可用于文字字符串。 现在我正在
谁能告诉我什么时候 g++ 将 __FUNCTION__“宏”替换为包含函数名称的字符串?似乎在检查源代码的语法正确性之前它不能替换它,即以下将不起作用 #include #define DBG_W
我知道这两者之间的区别,我已经查看了手册。 我还是有些困惑。我可以在类的方法中使用 __FUNCTION__,这代表这个方法的名称。当我回应它时,它只输出名称。这里很清楚。 但为什么我可以在非 cal
有没有人对 C# 版本的 C++ __FUNCTION__ 宏有好的解决方案?编译器似乎不喜欢它。 最佳答案 尝试改用它。 System.Reflection.MethodBase.GetCurren
这应该是微不足道的,但我似乎无法弄清楚如何将 __FUNCTION__ 与字符串连接起来,尤其是在 GCC 上——尽管它适用于 VC++(我正在将一些代码移植到 Linux) #include #i
对于 gcc 项目,__FUNCTION__、__FILE__ 和 __func__ 返回的指针是否保证指向持久内存? (也就是说,我可以安全地引用另一个函数范围内的指针吗?)我知道 __func__
有什么方法可以打印__FUNCTION__作为 linux 上的宽字符? WIDEN 的技巧对我不起作用,gcc 编译器打印: 错误:?L_FUNCTION_?在这方面没有申明 有什么帮助吗? 谢谢
我尝试编写一个宽版本的__FUNCTION__ 来支持可移植代码(Windows 和Linux) #include #include #include typedef wchar_t WCHAR
我是一名优秀的程序员,十分优秀!