2009-09-02 68 views
2

我正在開發一個C++項目,其中有許多類都有類,方法並且包含所有單個文件。這是一個很大的問題,因爲方法實現經常需要#include語句,任何想要使用類的文件都會傳遞這些#includes。我只是在想,這將是不錯的一個工具,做了一個C++頭文件中的下列操作:將C++方法聲明從.hh移動到.cc文件

  1. 解析一個C++頭文件分爲兩個部分:即聲明一個類頭文件,它的數據和該類的方法和實現這些方法的單獨文件。
  2. 從頭文件中刪除不必要的包含。
  3. 將必要的包含添加到實現文件。

我知道解析C++是非常困難的,但即使是不完美的工作也會改進我現在正在做的重複性文本編輯。有什麼能做這樣的事嗎?或者我堅持在自己的解決方案之間做出決定,還是堅持使用我的文本編輯器來完成這個決定?

+0

這是接近重複:http://stackoverflow.com/questions/976467/automatically-generate-c-source-and-header-and-update-vice-versa-on-changes-f和http ://stackoverflow.com/questions/652779/automatically-separate-class-definitions-from-claclarations – 2009-09-04 08:05:07

回答

2

你在尋找什麼類似Lazy C++

Lzz是一個工具,可以自動化許多繁重的C++編程任務。它可以 爲您節省了大量的時間,使編碼 更愉快。給定一個 聲明的序列Lzz將生成您的 頭文件和源文件。來自同一個地方

例子:

// A.lzz 
    class A 
    { 
    public: 
     inline void f (int i) { ... } 
     void g (int j = 0) { ... } 
    }; 
    bool operator == (A const & a1, A const & a2) { ... } 

Lzz will generate a header file: 

    // A.h 
    #ifndef LZZ_A_h 
    #define LZZ_A_h 
    class A 
    { 
    public: 
     void f (int i); 
     void g (int j = 0); 
    }; 
    inline void A::f (int i) { ... } 
    bool operator == (A const & a1, A const & a2); 
    #endif 

And a source file: 

    // A.cpp 
    #include "A.h" 
    void A::g (int j) { ... } 
    bool operator == (A const & a1, A const & a2) { ... } 
+0

這是非常可能的!感謝您的鏈接,我會看看它。 – 2009-09-02 20:49:05

1

第一步應該是很容易的事,雖然我沒有任何建議。 2和3要困難得多。看看這個question