Visual Studio 2017がC11の新機能をサポートしていない理由を誰かにアドバイスできます_Generic
か?これは非常に便利な機能ですが、Visual Studio2017では使用できません。
以下はサンプルコードです。
#include <stdio.h>
#define MYTYPE(X) _Generic((X),\
int:"int",\
float:"float",\
double:"double",\
default:"other")
int main(void)
{
int d = 5;
printf("%s\n", MYTYPE(d));
printf("%s\n", MYTYPE(2.0*D));
return 0;
}
コンパイラーは以下の警告とエラーを出します:
1>------ Build started: Project: Project1, Configuration: Debug Win32 ------
1>predef.c
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(11): warning C4013: '_Generic' undefined; assuming extern returning int
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(11): error C2059: syntax error: 'type'
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(12): error C2065: 'D': undeclared identifier
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(12): error C2059: syntax error: 'type'
1>Done building project "Project1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Visual Studio 2017は、C11の機能をサポートしていません。IntelCコンパイラをVisualStudio(C11をサポート)にプラグインするか、ClangまたはGccを使用できます。
Quoraの回答:
- VisualStudioに組み込みのCLANGサポートを追加します
- 新しいプロジェクトを作成する
- 「プラットフォームツールセット」のプロジェクトプロパティ(一般)で、「Visual Studio 2017-Clang with Microsoft CodeGen(v141_clang_c2)」を選択します。
- C / C ++の「言語」セクションで「C言語」標準リストを開きます。ここには、今日関連するすべてのC標準があります。LC89、C99、C11…必要なものを選択してください。
この後(これまでと同じ)、VS2017は「.c」拡張子がCで、「。cpp」拡張子がC ++のファイルをコンパイルします。
ファイルごとにプロパティを変更することもできることを忘れないでください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加