如何在main函數外獲取main函數的參數(argc、argv)
在main函數主函數外不採用全局變量的方式獲取argc、argv
調用attribute,在程序的.init_array字段添加指定函數地址,其傳入的參數中就有argc、argv參數。
代碼示例
#include <stdio.h>
#include <string.h>
static void get_main_para_test(int argc, char* argv[], char* envp[]) {
printf("i am here\n");
}
__attribute__((section(".init_array"))) \
void (* p_get_main_para_test_t)(int, char*[], char*[]) = &get_main_para_test;
int main(int argc, char *argv[])
{
return 0;
}
在函數執行時,會在.init_array地方執行get_main_para_test函數,
該方式可以在不使用全局變量的情況下,獲取並處理main傳的參數。
http://blog.csdn.net/libinbin_1014/article/details/53263786
https://gist.github.com/smokku/c0b64ec60c95736df7e1