eclipseでデバッグで配列の内容が確認できない
Debina9 + Eclipse3.8_CDTで、C++のコードをデバッグしていますが、#ifdefのところでブレイクして、pins[]の内容を見ると
Multiple errors reported.
と表示され、内容が確認できません。そもそも、配列として認識されていません。
これは何故でしょうか?
GDBならチャンと表示できますし、コンパイルでもエラーは出ません。
少し、長くなってすいませんが
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;
#define _DEBUG
#define MAX_COL 8 //最大列数
int main(int argc, char *argv[]){
if(argc != 2){
usage(argv[0]);
return 0;
}
fstream fin(argv[1], ios::in);
if(!fin){
cout << "ファイルをオープンできません\n";
return 0;
}
int row = 0;
int col = 0;
int first_col = 0;
string::size_type spos = 0;
string::size_type epos = 0;
const char delim = '\t';
string buf;
//ファイルを一度読込、行列数をカウント、ファイルフォーマットチェック
while(fin && getline(fin, buf)){ //1行読み込み
while(epos != string::npos){
epos = buf.find(delim, spos);
spos = epos + 1;
col++;
if(col > (MAX_COL+1)){ //列数チェック t+8port
cerr << "Format Error" << endl;
return 0;
}
}
if(row == 0){first_col = col;} //最初のカラムを保持
else{
if(first_col != col){
cerr << "Format Error" << endl;
return 0;
}
}
row++;
col = 0;
epos = 0;
}
col = first_col; //col=0で抜けて来たので、first_colに設定する
int msec[row]; //インターバル、PINデータ配列を作成
int pins[row][col];
fin.clear();
fin.seekp(0, ios_base::beg);
//改めて本番読みなおし、配列化
string str;
for(int i=0; i< row; i++){
getline(fin, buf);
for(int j=0; j<= col; j++){ //1行内スプリット9回繰り返し
epos = buf.find(delim, spos);
str = buf.substr(spos, epos-spos);
spos = epos + 1;
if(j==0){ //先頭列は時間
float sec;
istringstream is;
is.str(str);
is >> sec;
msec[i] = (int)(sec * 1000);
}
else{ //先頭以外は、シーケンスデータ
if(str == "1" || str == "1\r"){ //最終列は改行付き
pins[i][j-1] = 1;
}
else{
pins[i][j-1] = 0;
}
}
}
spos = 0; epos = 0; //スプリットポジション初期化
}
fin.close();
col--; //カラム数を8にpinsの列数に修正
#ifdef _DEBUG
//配列内容確認用
for(int i=0; i< row; i++){
cout << msec[i] << '\t';
for(int j=0; j<col; j++){
cout << pins[i][j] << '\t';
}
cout << endl;
}
#endif
//ここに処理を書く
gpio_ctl(row, col, msec, (int*)pins);
return 1;
}
引数のファイルは、こんな感じです
1 1 0 0 0 0 0 0 1
1 0 1 0 0 0 0 1 0
1 0 0 1 0 0 1 0 0
0.5 0 0 0 1 1 0 0 0
0.5 0 0 1 0 0 1 0 0
0.5 0 1 0 0 0 0 1 0