C/C++中函数main()的地址
Address of function main() in C/C++
有没有办法在C或C++中找到main()的地址?既然它本身就是一个函数,会有它自己的地址吗?
C
当然。简单地去做吧。
#include <stdio.h>
int main(void)
{
printf("%pn", &main);
}
C++
不允许使用main
的地址,因此,就您的目的而言,没有一个:
[C++11: 3.6.1/3]:
程序中不得使用功能主[..]
然而,在GCC中,您可以采用与在C中相同的方法,通过编译器扩展:
#include <iostream>
int main()
{
std::cout << (void*)&main << 'n';
}
您将收到一条不符合要求的警告。
我不能100%确定这个问题是来自使用C++的程序中,还是用于检索使用C/C++创建的main()
函数的地址(意思是来自命令行)。
由于你似乎已经收到了几个关于如何从程序中获取地址的好答案,我想我也可以提到你也可以从nm
中获取这些信息。
nm program|grep main
如果任何系统都找不到main的地址。。将对函数foo()的调用作为main中唯一的语句,让main返回它返回的任何内容,并使用foo的地址而不是main。
请注意,即使没有静态/全局变量,调用main也不一定会重新启动代码。编译器在实际调用main之前生成启动代码。
如果您想在调用main之前中断,请编写以下内容:
static int i=foo();
并且在较早的数据初始化步骤期间将调用foo。
相关文章:
- 将数组的地址分配给变量并删除
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 空基优化子对象的地址
- 代码在main()中运行,但在函数中出现错误
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 如何在c++程序中找到函数的地址
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 被解释为低级别const的const对象的地址
- 将地址分配给本地指针后,公共对象的变量将消失
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 为什么我在leetcode上收到AddressSanitizer:地址0x602000000058上的堆缓冲区溢出错误
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 内联程序集printf将整数解释为地址
- 为什么指针不写入类的地址?
- 如何通过main()函数传递私人数据地址
- C/C++中函数main()的地址
- 为什么在解析 main() 参数时获取地址值
- 列表数组-构造函数和main()中的地址不匹配
- 获取main()函数的地址是否非法?