2012-03-06 8 views
0

は、このようなコードを持っているために、適切と考えられますか?C++コード優雅

私はスレッドとメイン関数の両方がある点でこの文字列を使用しているため、これと似たようなコードを使用している理由はありますが(はるかに複雑です)、それを宣言するための唯一の方法スレッドとメイン関数の両方が、スレッドとメイン関数の外でそれを宣言することでした。これを行う良い方法は何ですか?

編集:私が書いたほとんどすべてのプログラムでそれを使用しているので、namespace std;を使用することを尋ねることはありません。

+0

'main()'にあるコードをインデントします。 – aroth

+0

まあ、1)それは文字列ではなく1つの文字であり、2)彼らはどのように "文字列"にアクセスしていますか?両方を読み書きしますか? 1つは他の書き込みを読む?マルチコア/プロセッサマシンでは、いくつかのロックプリミティブを考慮する必要があるかもしれません。最初に私はあなたがグローバルな 'using namespace std;'について質問していると思っていました: – 0xC0000022L

+2

コード優雅さに関する質問はここでは話題にはなりません。それらは[code-review Stack Exchangeサイト](http://codereview.stackexchange.com/)に属します。複数のスレッド間で変数を共有する方法を尋ねる場合は、追跡して*に尋ねてください。 –

答えて

1

あなたは、メインスレッドにローカル変数へのポインタを渡すことができます。

int main() { 
    int input; 
    set_thread_input(&input); 
    /* ... */ 
    return 0; 
} 

void thread_func(void *arg){ 
    int *input = (int*)arg; 
    /* ... */ 
} 
1

あなたはグローバルスコープで変数について尋ねている場合は、はい、それは確かに非常に一般的です。グローバルスコープで宣言されたオブジェクトより多くの人々が原則としてusing namespace std宣言に反対することに気付くでしょう。

+1

笑、あなたは私と同じトラップに陥った、質問はあまり曖昧だったにもかかわらず質問ではなかったと思う:) – 0xC0000022L

+0

私は 'using'についてかなり中立で、私は強く反対するだろうグローバルオブジェクト。 – visitor

関連する問題