如何在main函數外獲取main函數的參數(argc、argv)

如何在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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章