0

私が持っているいくつかのC++コードを移植しています。C ++で完全に機能するので、何が間違っているのかわかりません。「a.c」と「b.c」があります。どちらにも「」が含まれ、「a.h」には「」が含まれますb.h。""の関数はb.c、ヘッダーファイル(externキーワードを使用)で宣言されており、そのうちの1つは" a.c"から呼び出されます。コンパイルして実行しますが、呼び出しが通過しないようです(printf()診断のために数行入れても、何も起こりません)。

私は単純な何かを見落としていることを知っています、私はただ何に指を置くことができません。どんな助けでも大歓迎です。

編集:いくつかの簡略化されたコードを貼り付けます:編集2:呼び出しが通過し、修正するライブラリの問題がありました。現在、インデックス変数はインクリメントされていません。スコープの問題である可能性があります。

「ac」で

    #include "a.h"
    ...
    int sSimDisp(void){
        buttons();
    printf("x = %04d\n", index);
        ...
    }
    int main(){
    ...
    while(1) {
        sSimDisp();
        ...
    }
    return 0;
    }

「ああ」で

    #ifndef a_H_
    #define a_H_
    ...
    #include "b.h"
    #include "c.h"
    int sSimDisp(void);
    int main(void);
    #endif /* a_H_ */

「bc」で

    #include "a.h"
    ...
    int index = 0;
    void buttons(){
      printf("Entry to button subroutine.\n");
        index++;
        ...
    }
    void touchscreen(){
    ...
    }

「bh」で

    #ifndef b_H_
    #define b_H_
    ...
    extern int index;
    //button handler
    void buttons();
    //touch screen handler
    void touchscreen();   
    #endif /* b_H_ */
4

2 に答える 2

0

私のコードには何の問題もありません。ライブラリは本当にジャッキアップされています。みんなをつかんで、リポジトリへの最後の変更を並べ替えます。助けてくれてありがとう、私はそれが私が間違ったことではないことを確認したかっただけです。

于 2012-08-30T17:20:35.840 に答える
0

ah で int main(void) を宣言すると、未定義の動作が発生する可能性があります。

プログラムにはメインが 1 つしか存在できず、プロトタイプをヘッダーに入れません。

于 2012-08-30T08:16:06.350 に答える