2017-09-28 11 views
0

私は数年前からC++で作業していましたが、何度かコンパイルしましたが、次の問題はまったく新しくて意味がありません。cppファイルがclang ++とg ++でコンパイルされていない

  • グラムでcygwinのセットアップを使用して++バージョン:6.4.0と打ち鳴らす++バージョン:4.0.1
  • は崇高なテキストは、単純なCOUTを追加し、使用して新しいCPPのFIEを作成

    後、私は以下の午前手順は次のとおりです
    を次のコマンドでコンパイルします。clang ++ -g -Wall -std = C++ 14 thread1.cpp -o threadはうまくいきます。

  • 新しいコンテンツが追加されました。この時点では、コンパイル時に はutf-8ファイルではないとの大量のエラーが発生します。
  • utf-8エンコーディングを使用して崇高なテキストでファイルを保存しましたが、utf-8 BOMエンコーディングで を試しましたが、まだutf-8ファイルエラーではありません。
  • cygwinでfileコマンドを実行してファイルエンコーディングをチェックしました。ファイル-i thread1.cppがthread1.cppとして出力されました。text/x-c; charset = utf-8。

ここで間違っている可能性がある点を指摘してください。 、

./thread:3:29: error: source file is not valid UTF-8 
$<U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000>PE<U+0000><U+0000>d<86><U+0014><U+0000><87><F5><CC>Y<U+0000><U+0014><U+0001><U+0000><A9><U+0002><U+0000><U+0000><F0><U+0000>'... 
                                             ^
./thread:3:30: warning: null character ignored [-Wnull-character] 
$<U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000>PE<U+0000><U+0000>d<86><U+0014><U+0000><87><F5><CC>Y<U+0000><U+0014><U+0001><U+0000><A9><U+0002><U+0000><U+0000><F0><U+0000>'... 
                                              ^
./thread:3:31: warning: missing terminating ' character [-Winvalid-pp-token] 
$<U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000>PE<U+0000><U+0000>d<86><U+0014><U+0000><87><F5><CC>Y<U+0000><U+0014><U+0001><U+0000><A9><U+0002><U+0000><U+0000><F0><U+0000>'... 
                                                ^
./thread:4:3: warning: null character ignored [-Wnull-character] 
5<U+0001><U+0000><U+0000><E8><B0><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><C4><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><C8><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><CC>... 
     ^
./thread:4:4: warning: null character ignored [-Wnull-character] 
5<U+0001><U+0000><U+0000><E8><B0><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><C4><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><C8><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><CC>... 
       ^
./thread:4:5: error: source file is not valid UTF-8 
5<U+0001><U+0000><U+0000><E8><B0><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><C4><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><C8><U+0001><U+0000><U+0000>E1<C0>1<D2>1<C9><E8><CC>. 
+1

あなたはcoutを追加しました...あなたが発行する文字列を['u8'リテラル]に変更しますか?(https://stackoverflow.com/questions/13444930/is-the-u8-string-literal-necessary-in -c11)何か違いはありますか? – StoryTeller

+0

正確なエラーメッセージを含む実際の[mcve]が本当に役に立ちます。 – chris

答えて

6

#include "thread"を行うことにより:

#include "iostream" 
#include "thread" 
#include "mutex" 
using namespace std; 

class threadFunctor{ 
     public: 
}; 
int main(int argc , char** argv){ 
    cout << "Hello World"; 
    return 0; 
} 

エラーのスニペットが生成され、次のとおりです。次のコード

#include "iostream" 
#include "thread" 
#include "mutex" 
using namespace std; 

class threadFunctor{ 
     public: 

}; 
int main(int argc , char** argv){ 
    cout << "Hello"; 
    return 0; 
} 

はエラーを与える:以下の

コンパイルしたコードでありますあなたは(少なくとも慣例により)現在のディレクトリを確認するために最初にファイル。問題は、現在のディレクトリにthreadというファイルがあることです。おそらく、初めてコンパイルしたときの実行可能ファイルです。これは明示的に./threadと言うエラーによって明らかです。

ではなく、すべての標準ヘッダーを#include <thread>で含める必要があります。標準ヘッダーを最初に検索することは決してありません。

+0

私は "スレッド"を初めてコンパイルしたときに初めて使用しましたが、それはコンパイルに失敗した2回目の唯一のものです。 – Arup

+0

@Arupこれは、初めて 'thread'実行可能ファイルを持っていなかったので、現在のディレクトリを検索すると何も生成されず、検索にパスが含まれていたからです。 – chris

+0

それは働いて、感謝クリス。 – Arup

関連する問題