2017-10-02 7 views
1

私はUnix環境で、次のような単純なCPPファイルを持っています。どのようにprintfのために事前に定義されたCFLAGS

はしかし、私はg++ -Wall -g -DHELLOを使用してプログラムをコンパイルし、私は警告と言っ取得し、その後、HELLO="HELLO"をエクスポートしないとき:私はプログラムを実行すると

 
    warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type  ‘int’ [-Wformat=] 
     printf("HELLO = %s \n", HELLO); 

、私はセグメンテーションフォールトを取得します。

コードに-DHELLOを印刷するにはどうすればよいですか?

+2

'-DHELLO'は1 'ハローの#define、それゆえあなたは不正なコードを取得し'と同等です。 -DHELLO = "hello" ''を実行する必要があります(プリプロセッサ' cpp': 'echo' HELLO '| cpp -DHELLO'を直接呼び出すことで確認できます) – myaut

答えて

1

-DHELLO#define HELLO 1と等価であり、char*ではなくintを訴えるコンパイルエラーが説明されています。

は次のようにコンパイルしてみてください。

g++ -Wall -g -DHELLO="hello" 
関連する問題