インテルコンパイラを使用してC++コードをコンパイルするのに苦労しています。コンパイラはエラーなくジョブを実行します。 my_func_data.hは(問題を実証する目的のために)別のヘッダーファイルでなければならない構造であるGNUコンパイラとICCコンパイラの違い:コマンドラインの警告#10370:オプション-std = C++ 11はCコンパイルでは無効
MAIN.CPP
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <stdio.h>
#include "my_func_data.h"
int main()
{
my_func_data dataFunction;
dataFunction.vec.push_back(1);
dataFunction.vec.push_back(2);
dataFunction.vec.push_back(3);
dataFunction.vec.push_back(4);
for(int i=0;i<4;i++){
printf("%f\n",dataFunction.vec[i]);
}
return 0;
}
:
は、以下の主な機能を考えます。
#ifndef my_func_data_H_
#define my_func_data_H_
#include <stdio.h>
#include <stdlib.h>
#include <vector>
typedef struct
{
std::vector<double>vec;
}
my_func_data;
#endif
私は2つのコンパイラを読み込み、それぞれを使って2つの関数をコンパイルしようとします。 GNUコンパイラを使用して
第一:
module load compiler/gnu-6.2.0
g++ -std=c++11 Main.cpp my_func_data.h -o main
./main
1.000000
2.000000
3.000000
4.000000
次のコードをコンパイルからICCコンパイラを防ぐことができるものインテルコンパイラ
module load compiler/intel-15.0
icc -std=c++11 Main.cpp my_func_data.h -o main
icc: command line warning #10370: option '-std=c++11' is not valid for C compilations
my_func_data.h(6): catastrophic error: cannot open source file "vector"
#include <vector>
^
を使用していますか? また、構造体my_func_dataをmain関数に埋め込むと、コンパイルしてすべてを正しく実行します。
ありがとうございました。
[icc options](https://software.intel.com/sites/default/files/m/d/4/1/d/8/icc.txt)を見ましたか? –
ありがとうございました! '-std = C++ 11'(これは私がここで唯一のオプションであると理解しています)はそれ自身の問題ではありません。これは、スタンドアローンのヘッダファイルとしてmy_func_dataをコンパイルする瞬間です。コンパイラは、Cで書かれたコードをコンパイルしていることを示す警告をスローし、その後、ベクトルのエラーをスローします。あなたのコメントを誤解していますか?私にお知らせください。 – user2518768