0

ADCおよびその他の周辺機器用のベンダー固有のコードがあります。今それを使って、私は流れを理解しています。

ファイルの拡張子は.cppですが、そこにあるステートメントはC++ではなくCに似ています。つまり、coutの代わりにprintf()が使用されます。namespace.stdが定義されていません...それがc言語コードであることを確認した他のこともあります。(私を許してください、しかし私がベンダーに尋ねるものは何でも、しかし応答はそこからかなり遅いです)

つまり、これは完全なCコードです。しかし、理解しているうちに、クラスが定義されるようになり、今は本当に困惑しています。クラスを使っている人を見たり聞いたりしたことがないので

C4DSPBlast cBlast;
cBlast.GetBlastInfo();

ここで、C4DSPBlast cBlast;

次のコードは、C4DSPBlastがクラスであることを示しています。さて、デバッグ中に、まさにこのステートメントcBlast.GetBlastInfo()でエラーが発生していることがわかりました。しかし、Cのクラスがわからないので、デバッグをこれ以上進めないので、ここに投稿します。

class C4DSPBlast
{
public:

    //! empty constructor.
    C4DSPBlast(void);
    //! empty destructor.
    ~C4DSPBlast(void);

    //! Get BLAST information from the hardware(firmware). 
    /*!
     * Read the BLAST information from an the PCI memory attached to the hardware device. This function populates internal class members with this information.
     * @return  CBLAST_IO_ERROR_BLAST_INFO_RD, CBLAST_NO_DEV_TYPE or CBLAST_SUCCESS if no errors.
     */
    int GetBlastInfo(void);

    //! m_valBLASTRegister the standard BLAST information register.
    union { BLASTReg m_BLASTRegister; unsigned long m_val0; } m_valBLASTRegister;   

    //! m_valBLASTRegisterExt the extended BLAST information register.
    union { BLASTReg m_BLASTRegisterExt; unsigned long m_val1; } m_valBLASTRegisterExt;

    //! The whole BLAST information populated by GetBlastInfo() as a C data structure.
    struct BOARD m_cBoard;
};
4

2 に答える 2

4

コードはC++です。C ++としてコンパイルすると、エラーが消えます。

于 2012-07-06T11:09:07.413 に答える
1

CとC++は異なる言語です。現在の一般的な規則では、コンパイラに拡張子.cを付けたファイルを指定すると、Cファイルとしてコンパイルされます。.cppまたは.cxx(正確なリストはコンパイラによって異なります)を指定すると、C++ファイルとして処理されます。これは、同じコマンドラインにC /C++ファイルを混在させても機能します。

任意のCファイルを取得し、名前をに変更し.cppてコンパイラーに渡すと、99%の確率でコンパイルされます。C ++標準では、Cとの非互換性のリストが記述されていますが、これらはかなりまれなものです。

ほとんどの場合、Cとして作成され、C++として新しい生活を始めたファイルが表示されます。

于 2012-07-06T10:16:21.677 に答える