我正在尝试创建一个像这样的 before-main 评估:
int evaluate(int argc, char** argv) __attribute__ ((constructor));
int evaluate(int argc, char** argv)
{
int result = atoi(argv[1]);
if (result == 0)
return 1;
else
return 0;
}
int main(?????)
{
if (????? == 0)
printf("Wrong number.");
else
printf("It is 1!");
}
有办法做到这一点吗?我这样做纯粹是为了让自己更熟悉 C、传递命令行参数和使用 pre-main 函数。
最佳答案
这非常依赖于平台。 glibc 动态加载器将 argc、argv 和 envp 传递给 ELF 构造函数,因此您可以通过这种方式访问程序参数。据我所知,这是一个未记录的动态加载器功能,因此您可能不应该依赖此行为。
对于检查结果,您必须将其写入全局变量(或将其记录在其他全局数据结构中)。该实现丢弃了
关于c - 在 main 中获取 __attribute__ ((constructor)) 函数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58999228/