2016-11-28 113 views
0

我正在使用cryptopan代碼。我想將<array>庫添加到我的代碼中,因爲我想使用.size()來檢索其上的數組大小。下面是代碼:編譯時間錯誤5

// Package: Crypto-PAn 1.0 
// File: sample.cpp 
// Last Update: April 17, 2002 
// Author: Jinliang Fan 

#include <stdlib.h> 
#include <stdio.h> 
#include "panonymizer.h" 
#include <array> 

int main(int argc, char * argv[]) { 
// Provide your own 256-bit key here 
unsigned char my_key[32] = 
{21,34,23,141,51,164,207,128,19,10,91,22,73,144,125,16, 
216,152,143,131,121,121,101,39,98,87,76,45,42,132,34,2}; 

FILE * f; 
unsigned int raw_addr, anonymized_addr; 

// Create an instance of PAnonymizer with the key 
PAnonymizer my_anonymizer(my_key); 

float packet_time; 
unsigned int packet_size, packet_addr1, packet_addr2, packet_addr3, packet_addr4; 

if (argc != 2) { 
    fprintf(stderr, "usage: sample raw-trace-file\n"); 
    exit(-1); 
} 

if ((f = fopen(argv[1],"r")) == NULL) { 
    fprintf(stderr,"Cannot open file %s\n", argv[1]); 
    exit(-2); 
} 

//readin and handle each line of the input file 
while (fscanf(f, "%f", &packet_time) != EOF) { 
fscanf(f, "%u", &packet_size); 
fscanf(f, "%u.%u.%u.%u", &packet_addr1, &packet_addr2, &packet_addr3, &packet_addr4); 

//convert the raw IP from a.b.c.d format into unsigned int format. 
raw_addr = (packet_addr1 << 24) + (packet_addr2 << 16) + (packet_addr3 << 8) + packet_addr4; 

//Anonymize the raw IP 
anonymized_addr = my_anonymizer.anonymize(raw_addr); 

//convert the anonymized IP from unsigned int format to a.b.c.d format 
packet_addr1 = anonymized_addr >> 24; 
packet_addr2 = (anonymized_addr << 8) >> 24; 
packet_addr3 = (anonymized_addr << 16) >> 24; 
packet_addr4 = (anonymized_addr << 24) >> 24; 

//output the sanitized trace 
printf("%6f\t%u\t%u.%u.%u.%u\n", packet_time, packet_size, packet_addr1, packet_addr2, packet_addr3, packet_addr4); 
} 

} 

當我運行make文件或編譯.cpp文件時,它返回到我的錯誤:

error: #error This file requires compiler and library support for the ISO C++ 2011 standard. 
       This support is currently experimental, and must be 
       enabled with the -std=c++11 or -std=gnu++11 compiler options. 
     #error This file requires compiler and library support for the \ 
+1

爲什麼你有'#包括'? – NathanOliver

+3

遵循錯誤消息中的說明怎麼辦? –

回答

0

添加-std = C++ 11的編譯器命令行。 例如:

g++ -std=c++11 myFile.cpp

這指示編譯器使用新的C++標準。默認情況下,g ++針對沒有標題的較舊的C++標準進行編譯。

+0

我嘗試過,但仍然一樣 – momen