Проблема с портированием в visual studio 2015 — _flag не является членом _iobuf

Я портирую существующий код, совместимый с компилятором VC12, на VC14 (Visual Studio 2015), и я столкнулся с проблемой разрыва кода.

Пример программы для воспроизведения вопроса:

#include "iostream"using namespace std;
#define mybuffer(param)       ((param)->_flag & (_IOMYBUF))

int main()
{
mybuffer(stderr); // I don't understand what is the purpose of this line.
// So, facing issue in replacing this code statement.
return 0;
}

На visual studio 2013: вышеуказанная программа работает абсолютно нормально.

На visual studio 2015: вышеуказанная программа выдает ошибку компиляции.

Ошибка C2039 «_flag»: не является членом «_iobuf»

Ошибка C2065 ‘_IOMYBUF’: необъявленный идентификатор

Анализ:

В VS2013 wchar.h имеет следующее:

struct _iobuf {
char *_ptr;
int   _cnt;
char *_base;
int   _flag;
int   _file;
int   _charbuf;
int   _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;

Где, как в VS2015, в файле: corecrt_wstdio.h

#ifndef _FILE_DEFINED
#define _FILE_DEFINED
typedef struct _iobuf
{
void* _Placeholder;
} FILE;
#endif

Можете ли вы помочь мне предложить исправление для вышеуказанной ошибки?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]