<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    static 函數在其他文件中調用方法


    發現錯別字 2年前 提問
    回答
    1
    瀏覽
    2338
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1
    安全集成(專業級)SI/PL CISAW安全運維(專業級)

    static函數是不能被其他文件直接調用的,可以用間接的方式。

    方法一:通過非static函數的方式,我們可以定義一個普通的函數,讓這個普通函數調用static函數,然后在把這個普通函數在頭文件中聲明。

    1.cpp)
    #include 
    #include "2.h"
    void main()
    {
        struct stru stru1;
        use_my_static(&stru1);
        stru1.f();
    }
    2.cpp)
    
    #include "2.h"
    
    #include 
    
    static  void my_static()
    {
        printf("我是外邊的static的函數,我被調用了\n");
    }
    
    void use_my_static(struct stru *h)
    {
        h->f=my_static;
    };
    2.h頭文件
    static void my_static();
    struct stru{
        void (*f)();
    };
    void use_my_static(struct stru *h);

    方法二:通過函數指針的方式, 我們只要得到這個函數的地址,那么就一定可以調用它,大家要知道static函數是對編譯器起作用的,在運行時根本沒有static了,有的只是函數地址,所以只要搞到函數地址管它是不是static的照調不誤。

    class Hack
    {
    private:
    int x;
    public:
    int get_x();
    static void func(Hack * pthis); // 靜態成員函數
    void func2(); // 非靜態成員函數
    };
    
    void Hack::func(Hack * pthis)
    {
    int y = pthis->get_x(); // 訪問對象的數據成員
    }

    回答所涉及的環境:聯想天逸510S、Windows 10。

    2年前 / 評論
    亚洲 欧美 自拍 唯美 另类