Ошибка c2220 следующее предупреждение рассматривается как ошибка

I have below class

class Cdata12Mnt
{
public:
    char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
    char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
    char cflpath[256];
    char basetext[256];
    UINT database[ID1_MAX_INF];
    int State;

public:
    char SelectPath[256];

public:
    int GetIOBName(int slt,char *Name);
    Cdata12Mnt(char *SelectPath);
    virtual ~Cdata12Mnt();
    int     GetValue(int id);
    int     GetState() { return State; }
};

And I have function as below

Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
    SCTReg  reg;
    char    buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
    char    *startcode[] = {"CNTL_CODE ","SEGMENT "};
    char    *stopcode    = {"END_CNTL_CODE "};
    FILE    *fp;
    int     ii, infl;

    State = 0;

    for (ii = 0; ii < (ID1_IOB_PIOTSUP - ID1_IOB_TOP); ii++) {
        strcpy(IOBname[ii], "");
    }

    for (ii = 0; ii < (ID1_MAX_INF-ID1_EXIOB_U1TOP); ii++) {
        **strcpy(ExIOBname[ii], "");**
    }

    sprintf(cflpath, "%s\%s", SelectPath, CDATAFL);

    if ((fp = fopen(cflpath,"r"))!=NULL) {
        for (ii = 0, infl = 0; fgets(buf, 256, fp) != NULL;) {
            if (infl == 0 && strncmp(buf, startcode[0], strlen(startcode[0])) == 0) {
                if ((cpnt = strchr(&buf[strlen(startcode[0])],*startcode[1])) != NULL) {
                    if (strncmp(cpnt,startcode[1], strlen(startcode[1])) == 0) {
                        infl = 1;
                        continue;
                    }
                }
            }

            if (infl == 0) {
                continue;
            }

            if (strncmp(buf,stopcode,strlen(stopcode))==0) {
                if (ii == ID1_EXIOB_U1TOP) {
                    for (int nDataNumber = ii; nDataNumber < ID1_MAX_INF; nDataNumber++) {
                        database[nDataNumber] = 0;
                    }
                }

                infl = 0;
                continue;
            }

            if (strncmp(&buf[14], " DD ", 4) == 0) {
                if ((cpnt=strchr(buf, ';')) != NULL) {
                    *cpnt = '';
                }

                if (ii >= ID1_IOB_TOP && ii < ID1_IOB_PIOTSUP) {
                    if ((bpnt1 = strchr(cpnt + 1,'(')) != NULL && (bpnt2=strchr(cpnt + 1,')'))!=NULL && bpnt1 < bpnt2) {
                        *bpnt2 = '';
                        *(bpnt1 + BOADNAM_MAX + 1) = '';
                        strcpy(IOBname[ii-ID1_IOB_TOP], bpnt1 + 1);
                    }
                }

                if (ii >= ID1_EXIOB_U1TOP && ii < ID1_MAX_INF) {
                    if ((bpnt1 = strchr(cpnt + 1, '(')) != NULL && (bpnt2=strchr(cpnt+1,')'))!=NULL && bpnt1 < bpnt2) {
                            *bpnt2='';
                            *(bpnt1+BOADNAM_MAX+1)='';
                            strcpy(ExIOBname[ii-ID1_EXIOB_U1TOP], bpnt1 + 1);
                    }
                }

                for (cpnt = &buf[18]; cpnt != NULL;) {
                    if ((npnt=strchr(cpnt, ',')) != NULL)
                        *npnt='';
                }

                if (strchr(cpnt,'H')!=NULL) {
                    sscanf(cpnt,"%XH",&database[ii]);
                } else {
                    database[ii]=atoi(cpnt);
                }

                ii++;
                cpnt = npnt;

                if (cpnt != NULL) {
                    cpnt++;
                }
            }
        }
    }

    fclose(fp);
} else {
    State=-1;
}

When I compile this function in Visual studio 2008, it gives me error at strcpy(IOBname[ii],""); as below

error C2220: warning treated as error — no ‘object’ file generated

How to fix this error?

I am getting the following error while building a project. Even though I am setting the
property «treat warning as errors» to «NO» I am getting this one:

error C2220: warning treated as error - no object file is created.

Can any one Help me Resolving This One? Thanks in Advance.

sam hocevar's user avatar

sam hocevar

11.8k5 gold badges49 silver badges68 bronze badges

asked Jun 1, 2009 at 7:35

Cute's user avatar

1

The documentation for C2220 suggests compiling at a lower warning level. It also shows that the warning treated as error option is implemented as a compiler flag: /WX. So you could search your .vcproj file for that text and manually remove it from the file.

answered Jun 1, 2009 at 15:41

sean e's user avatar

sean esean e

11.8k3 gold badges44 silver badges56 bronze badges

Probably you forgot to add an header. Just where you get the first warning and see in what header file is defined.

Regards

answered Jun 1, 2009 at 7:56

Sacx's user avatar

SacxSacx

6,2564 gold badges22 silver badges29 bronze badges

I got «error C2220: warning treated as error — no object file is created.» in below code.
Once I changed datatype of total to int , the error was resolved.

int colNum=0;
unsigned int total=123;
for (colNum=0;colNum<total;colNum++) {

answered Jul 14, 2014 at 20:46

sparco's user avatar

sparcosparco

851 silver badge7 bronze badges

1

#pragma warning(disable : 4146)

Set this at the file level instead of changing the project setting.

answered Sep 3, 2014 at 11:37

Akaanthan Ccoder's user avatar

Akaanthan CcoderAkaanthan Ccoder

2,1595 gold badges21 silver badges37 bronze badges

У меня есть ниже класс:

class Cdata12Mnt
{
public:
char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
char cflpath[256];
char basetext[256];
UINT database[ID1_MAX_INF];
int State;

public:
char SelectPath[256];

public:
int GetIOBName(int slt,char *Name);
Cdata12Mnt(char *SelectPath);
virtual ~Cdata12Mnt();
int     GetValue(int id);
int     GetState() { return State; }
};

И у меня есть функция как ниже:

Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
SCTReg  reg;
char    buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
char    *startcode[] = {"CNTL_CODE ","SEGMENT "};
char    *stopcode    = {"END_CNTL_CODE "};
FILE    *fp;
int     ii, infl;

State = 0;

for (ii = 0; ii < (ID1_IOB_PIOTSUP - ID1_IOB_TOP); ii++) {
strcpy(IOBname[ii], "");
}

for (ii = 0; ii < (ID1_MAX_INF-ID1_EXIOB_U1TOP); ii++) {
**strcpy(ExIOBname[ii], "");**
}

sprintf(cflpath, "%s\%s", SelectPath, CDATAFL);

if ((fp = fopen(cflpath,"r"))!=NULL) {
for (ii = 0, infl = 0; fgets(buf, 256, fp) != NULL;) {
if (infl == 0 && strncmp(buf, startcode[0], strlen(startcode[0])) == 0) {
if ((cpnt = strchr(&buf[strlen(startcode[0])],*startcode[1])) != NULL) {
if (strncmp(cpnt,startcode[1], strlen(startcode[1])) == 0) {
infl = 1;
continue;
}
}
}

if (infl == 0) {
continue;
}

if (strncmp(buf,stopcode,strlen(stopcode))==0) {
if (ii == ID1_EXIOB_U1TOP) {
for (int nDataNumber = ii; nDataNumber < ID1_MAX_INF; nDataNumber++) {
database[nDataNumber] = 0;
}
}

infl = 0;
continue;
}

if (strncmp(&buf[14], " DD ", 4) == 0) {
if ((cpnt=strchr(buf, ';')) != NULL) {
*cpnt = '';
}

if (ii >= ID1_IOB_TOP && ii < ID1_IOB_PIOTSUP) {
if ((bpnt1 = strchr(cpnt + 1,'(')) != NULL && (bpnt2=strchr(cpnt + 1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2 = '';
*(bpnt1 + BOADNAM_MAX + 1) = '';
strcpy(IOBname[ii-ID1_IOB_TOP], bpnt1 + 1);
}
}

if (ii >= ID1_EXIOB_U1TOP && ii < ID1_MAX_INF) {
if ((bpnt1 = strchr(cpnt + 1, '(')) != NULL && (bpnt2=strchr(cpnt+1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2='';
*(bpnt1+BOADNAM_MAX+1)='';
strcpy(ExIOBname[ii-ID1_EXIOB_U1TOP], bpnt1 + 1);
}
}

for (cpnt = &buf[18]; cpnt != NULL;) {
if ((npnt=strchr(cpnt, ',')) != NULL)
*npnt='';
}

if (strchr(cpnt,'H')!=NULL) {
sscanf(cpnt,"%XH",&database[ii]);
} else {
database[ii]=atoi(cpnt);
}

ii++;
cpnt = npnt;

if (cpnt != NULL) {
cpnt++;
}
}
}
}

fclose(fp);
} else {
State=-1;
}

Когда я компилирую эту функцию в Visual Studio 2008, она выдает ошибку при strcpy(IOBname[ii],""); как ниже.

ошибка C2220: предупреждение рассматривается как ошибка — файл объекта не создан

Как исправить эту ошибку?

21

Решение

Ошибка говорит о том, что предупреждение было обработано как ошибка. Поэтому ваша проблема — предупреждающее сообщение! Проверьте их и исправьте их.

Если вы не знаете, как их найти: откройте Error List (View > Error List) и нажмите на Warning,

23

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

Идти к project properties -> configurations properties -> C/C++ -> treats warning as error -> No (/WX-),

10

Это сообщение об ошибке очень запутанно. Я просто исправил другие «предупреждения» в своем проекте, и у меня действительно было только одно (простое):

предупреждение C4101: ‘i’: локальная переменная без ссылки

После того, как я прокомментировал это неиспользованным iи скомпилировал его, другая ошибка исчезла.

5

Как примечание, вы можете включить / отключить отдельные предупреждения, используя #pragma, Вы можете взглянуть на документацию Вот

Из документации:

// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
int x;
int y = x;   // no C4700 here
#pragma warning(default:4700)   // C4700 enabled after Test ends
}

int main() {
int x;
int y = x;   // C4700
}

3

Это предупреждение о небезопасном использовании strcpy. Пытаться IOBname[ii]=''; вместо.

1

#c #visual-studio-2019 #compiler-warnings #code-analysis

#c #visual-studio-2019 #компилятор-предупреждения #анализ кода

Вопрос:

Недавно я переместил большую кодовую базу с VS2013 на VS2019, которая создается для 32-разрядных и 64-разрядных целей Windows.

Отладочные и выпускные версии компилируются с многочисленными предупреждениями, хотя они в основном такие же, как в сборке VS2013. Большинство из них являются тривиальными проблемами, которые, как я знаю, безопасны. Я компилирую с помощью опции компилятора «W3».

Однако, когда я пытаюсь скомпилировать «анализируемую» версию сборки (я включаю опцию компилятора «/ analyze») Я получаю многие из следующих:

ошибка C2220: следующее предупреждение рассматривается как ошибка

Этого следовало ожидать, и некоторые из этих ошибок требуют внимания. Но первое, что кажется странным, это то, что МНОГИЕ из этих «ошибок» были из библиотек Windows SDK — код, который я не совсем готов редактировать.

Затем я прочитал следующее: https://learn.microsoft.com/en-us/cpp/build/reference/analyze-code-analysis?view=vs-2019 Поэтому я изменил «/ analyze» на «analyze:WX-«, просто ради эксперимента. Это заставило замолчать МНОГИЕ ошибки, но я все равно получаю несколько сообщений «Ошибка C2220: следующее предупреждение рассматривается как ошибка», в основном в сторонних библиотеках. Я рад исправить (или игнорировать, где это уместно) проблемы, которые возникли в моем собственном коде.

Итак, мой вопрос в том, как мне подавить эту ошибку, когда она появляется в таких вещах, как Windows SDK и очень хорошо используемые сторонние библиотеки? Тот факт, что это не более чем проблема, заставляет меня подозревать, что я что-то пропустил здесь. Но в настоящее время я не могу выполнить анализ кода, что на самом деле не было проблемой в VS2013.

Комментарии:

1. По какой-то причине включен /WX , который превращает предупреждения в ошибки C2220. Продолжайте, отключив его.

2. После переноса кода с VS2013 на VS2015 эта Treat Linker Warning As Errors опция будет включена в некоторых Project параметрах компиляции. Вы могли бы установить No , Properties->C/C ->General->Treat Linker Warning As Errors чтобы избежать их.

У меня есть ниже класс:

class Cdata12Mnt
{
public:
char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
char cflpath[256];
char basetext[256];
UINT database[ID1_MAX_INF];
int State;

public:
char SelectPath[256];

public:
int GetIOBName(int slt,char *Name);
Cdata12Mnt(char *SelectPath);
virtual ~Cdata12Mnt();
int     GetValue(int id);
int     GetState() { return State; }
};

И у меня есть функция как ниже:

Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
SCTReg  reg;
char    buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
char    *startcode[] = {"CNTL_CODE ","SEGMENT "};
char    *stopcode    = {"END_CNTL_CODE "};
FILE    *fp;
int     ii, infl;

State = 0;

for (ii = 0; ii < (ID1_IOB_PIOTSUP - ID1_IOB_TOP); ii++) {
strcpy(IOBname[ii], "");
}

for (ii = 0; ii < (ID1_MAX_INF-ID1_EXIOB_U1TOP); ii++) {
**strcpy(ExIOBname[ii], "");**
}

sprintf(cflpath, "%s%s", SelectPath, CDATAFL);

if ((fp = fopen(cflpath,"r"))!=NULL) {
for (ii = 0, infl = 0; fgets(buf, 256, fp) != NULL;) {
if (infl == 0 && strncmp(buf, startcode[0], strlen(startcode[0])) == 0) {
if ((cpnt = strchr(&buf[strlen(startcode[0])],*startcode[1])) != NULL) {
if (strncmp(cpnt,startcode[1], strlen(startcode[1])) == 0) {
infl = 1;
continue;
}
}
}

if (infl == 0) {
continue;
}

if (strncmp(buf,stopcode,strlen(stopcode))==0) {
if (ii == ID1_EXIOB_U1TOP) {
for (int nDataNumber = ii; nDataNumber < ID1_MAX_INF; nDataNumber++) {
database[nDataNumber] = 0;
}
}

infl = 0;
continue;
}

if (strncmp(&buf[14], " DD ", 4) == 0) {
if ((cpnt=strchr(buf, ';')) != NULL) {
*cpnt = '';
}

if (ii >= ID1_IOB_TOP && ii < ID1_IOB_PIOTSUP) {
if ((bpnt1 = strchr(cpnt + 1,'(')) != NULL && (bpnt2=strchr(cpnt + 1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2 = '';
*(bpnt1 + BOADNAM_MAX + 1) = '';
strcpy(IOBname[ii-ID1_IOB_TOP], bpnt1 + 1);
}
}

if (ii >= ID1_EXIOB_U1TOP && ii < ID1_MAX_INF) {
if ((bpnt1 = strchr(cpnt + 1, '(')) != NULL && (bpnt2=strchr(cpnt+1,')'))!=NULL && bpnt1 < bpnt2) {
*bpnt2='';
*(bpnt1+BOADNAM_MAX+1)='';
strcpy(ExIOBname[ii-ID1_EXIOB_U1TOP], bpnt1 + 1);
}
}

for (cpnt = &buf[18]; cpnt != NULL;) {
if ((npnt=strchr(cpnt, ',')) != NULL)
*npnt='';
}

if (strchr(cpnt,'H')!=NULL) {
sscanf(cpnt,"%XH",&database[ii]);
} else {
database[ii]=atoi(cpnt);
}

ii++;
cpnt = npnt;

if (cpnt != NULL) {
cpnt++;
}
}
}
}

fclose(fp);
} else {
State=-1;
}

Когда я компилирую эту функцию в Visual Studio 2008, она выдает ошибку при strcpy(IOBname[ii],""); как ниже.

ошибка C2220: предупреждение рассматривается как ошибка — файл объекта не создан

Как исправить эту ошибку?

21

Решение

Ошибка говорит о том, что предупреждение было обработано как ошибка. Поэтому ваша проблема — предупреждающее сообщение! Проверьте их и исправьте их.

Если вы не знаете, как их найти: откройте Error List (View > Error List) и нажмите на Warning,

23

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

Идти к project properties -> configurations properties -> C/C++ -> treats warning as error -> No (/WX-),

10

Это сообщение об ошибке очень запутанно. Я просто исправил другие «предупреждения» в своем проекте, и у меня действительно было только одно (простое):

предупреждение C4101: ‘i’: локальная переменная без ссылки

После того, как я прокомментировал это неиспользованным iи скомпилировал его, другая ошибка исчезла.

5

Как примечание, вы можете включить / отключить отдельные предупреждения, используя #pragma, Вы можете взглянуть на документацию Вот

Из документации:

// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
int x;
int y = x;   // no C4700 here
#pragma warning(default:4700)   // C4700 enabled after Test ends
}

int main() {
int x;
int y = x;   // C4700
}

3

Это предупреждение о небезопасном использовании strcpy. Пытаться IOBname[ii]=''; вместо.

1

I have below class

class Cdata12Mnt
{
public:
    char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
    char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
    char cflpath[256];
    char basetext[256];
    UINT database[ID1_MAX_INF];
    int State;

public:
    char SelectPath[256];

public:
    int GetIOBName(int slt,char *Name);
    Cdata12Mnt(char *SelectPath);
    virtual ~Cdata12Mnt();
    int     GetValue(int id);
    int     GetState() { return State; }
};

And I have function as below

Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
    SCTReg  reg;
    char    buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
    char    *startcode[] = {"CNTL_CODE ","SEGMENT "};
    char    *stopcode    = {"END_CNTL_CODE "};
    FILE    *fp;
    int     ii, infl;

    State = 0;

    for (ii = 0; ii < (ID1_IOB_PIOTSUP - ID1_IOB_TOP); ii++) {
        strcpy(IOBname[ii], "");
    }

    for (ii = 0; ii < (ID1_MAX_INF-ID1_EXIOB_U1TOP); ii++) {
        **strcpy(ExIOBname[ii], "");**
    }

    sprintf(cflpath, "%s%s", SelectPath, CDATAFL);

    if ((fp = fopen(cflpath,"r"))!=NULL) {
        for (ii = 0, infl = 0; fgets(buf, 256, fp) != NULL;) {
            if (infl == 0 && strncmp(buf, startcode[0], strlen(startcode[0])) == 0) {
                if ((cpnt = strchr(&buf[strlen(startcode[0])],*startcode[1])) != NULL) {
                    if (strncmp(cpnt,startcode[1], strlen(startcode[1])) == 0) {
                        infl = 1;
                        continue;
                    }
                }
            }

            if (infl == 0) {
                continue;
            }

            if (strncmp(buf,stopcode,strlen(stopcode))==0) {
                if (ii == ID1_EXIOB_U1TOP) {
                    for (int nDataNumber = ii; nDataNumber < ID1_MAX_INF; nDataNumber++) {
                        database[nDataNumber] = 0;
                    }
                }

                infl = 0;
                continue;
            }

            if (strncmp(&buf[14], " DD ", 4) == 0) {
                if ((cpnt=strchr(buf, ';')) != NULL) {
                    *cpnt = '';
                }

                if (ii >= ID1_IOB_TOP && ii < ID1_IOB_PIOTSUP) {
                    if ((bpnt1 = strchr(cpnt + 1,'(')) != NULL && (bpnt2=strchr(cpnt + 1,')'))!=NULL && bpnt1 < bpnt2) {
                        *bpnt2 = '';
                        *(bpnt1 + BOADNAM_MAX + 1) = '';
                        strcpy(IOBname[ii-ID1_IOB_TOP], bpnt1 + 1);
                    }
                }

                if (ii >= ID1_EXIOB_U1TOP && ii < ID1_MAX_INF) {
                    if ((bpnt1 = strchr(cpnt + 1, '(')) != NULL && (bpnt2=strchr(cpnt+1,')'))!=NULL && bpnt1 < bpnt2) {
                            *bpnt2='';
                            *(bpnt1+BOADNAM_MAX+1)='';
                            strcpy(ExIOBname[ii-ID1_EXIOB_U1TOP], bpnt1 + 1);
                    }
                }

                for (cpnt = &buf[18]; cpnt != NULL;) {
                    if ((npnt=strchr(cpnt, ',')) != NULL)
                        *npnt='';
                }

                if (strchr(cpnt,'H')!=NULL) {
                    sscanf(cpnt,"%XH",&database[ii]);
                } else {
                    database[ii]=atoi(cpnt);
                }

                ii++;
                cpnt = npnt;

                if (cpnt != NULL) {
                    cpnt++;
                }
            }
        }
    }

    fclose(fp);
} else {
    State=-1;
}

When I compile this function in Visual studio 2008, it gives me error at strcpy(IOBname[ii],""); as below

error C2220: warning treated as error — no ‘object’ file generated

How to fix this error?

I am getting the following error while building a project. Even though I am setting the
property «treat warning as errors» to «NO» I am getting this one:

error C2220: warning treated as error - no object file is created.

Can any one Help me Resolving This One? Thanks in Advance.

sam hocevar's user avatar

sam hocevar

11.8k5 gold badges49 silver badges68 bronze badges

asked Jun 1, 2009 at 7:35

Cute's user avatar

1

The documentation for C2220 suggests compiling at a lower warning level. It also shows that the warning treated as error option is implemented as a compiler flag: /WX. So you could search your .vcproj file for that text and manually remove it from the file.

answered Jun 1, 2009 at 15:41

sean e's user avatar

sean esean e

11.8k3 gold badges44 silver badges56 bronze badges

Probably you forgot to add an header. Just where you get the first warning and see in what header file is defined.

Regards

answered Jun 1, 2009 at 7:56

Sacx's user avatar

SacxSacx

6,2564 gold badges22 silver badges29 bronze badges

I got «error C2220: warning treated as error — no object file is created.» in below code.
Once I changed datatype of total to int , the error was resolved.

int colNum=0;
unsigned int total=123;
for (colNum=0;colNum<total;colNum++) {

answered Jul 14, 2014 at 20:46

sparco's user avatar

sparcosparco

851 silver badge7 bronze badges

1

#pragma warning(disable : 4146)

Set this at the file level instead of changing the project setting.

answered Sep 3, 2014 at 11:37

Akaanthan Ccoder's user avatar

Akaanthan CcoderAkaanthan Ccoder

2,1595 gold badges21 silver badges37 bronze badges

#c #visual-studio-2019 #compiler-warnings #code-analysis

#c #visual-studio-2019 #компилятор-предупреждения #анализ кода

Вопрос:

Недавно я переместил большую кодовую базу с VS2013 на VS2019, которая создается для 32-разрядных и 64-разрядных целей Windows.

Отладочные и выпускные версии компилируются с многочисленными предупреждениями, хотя они в основном такие же, как в сборке VS2013. Большинство из них являются тривиальными проблемами, которые, как я знаю, безопасны. Я компилирую с помощью опции компилятора «W3».

Однако, когда я пытаюсь скомпилировать «анализируемую» версию сборки (я включаю опцию компилятора «/ analyze») Я получаю многие из следующих:

ошибка C2220: следующее предупреждение рассматривается как ошибка

Этого следовало ожидать, и некоторые из этих ошибок требуют внимания. Но первое, что кажется странным, это то, что МНОГИЕ из этих «ошибок» были из библиотек Windows SDK — код, который я не совсем готов редактировать.

Затем я прочитал следующее: https://learn.microsoft.com/en-us/cpp/build/reference/analyze-code-analysis?view=vs-2019 Поэтому я изменил «/ analyze» на «analyze:WX-«, просто ради эксперимента. Это заставило замолчать МНОГИЕ ошибки, но я все равно получаю несколько сообщений «Ошибка C2220: следующее предупреждение рассматривается как ошибка», в основном в сторонних библиотеках. Я рад исправить (или игнорировать, где это уместно) проблемы, которые возникли в моем собственном коде.

Итак, мой вопрос в том, как мне подавить эту ошибку, когда она появляется в таких вещах, как Windows SDK и очень хорошо используемые сторонние библиотеки? Тот факт, что это не более чем проблема, заставляет меня подозревать, что я что-то пропустил здесь. Но в настоящее время я не могу выполнить анализ кода, что на самом деле не было проблемой в VS2013.

Комментарии:

1. По какой-то причине включен /WX , который превращает предупреждения в ошибки C2220. Продолжайте, отключив его.

2. После переноса кода с VS2013 на VS2015 эта Treat Linker Warning As Errors опция будет включена в некоторых Project параметрах компиляции. Вы могли бы установить No , Properties->C/C ->General->Treat Linker Warning As Errors чтобы избежать их.

description title ms.date f1_keywords helpviewer_keywords ms.assetid

Learn more about: Compiler Error C2220

Compiler Error C2220

11/04/2016

C2220

C2220

d610802c-64d7-40ad-a2a6-0ed0b6815a6c

Compiler Error C2220

warning treated as error — no object file generated

/WX tells the compiler to treat all warnings as errors. Because an error occurred, no object or executable file was generated.

This error only appears when the /WX flag is set and a warning occurs during compilation. To fix this error, you must eliminate every warning in your project.

To fix, use one of the following techniques

  • Fix the problems that cause warnings in your project.

  • Compile at a lower warning level—for example, use /W3 instead of /W4.

  • Use a warning pragma to disable or suppress a specific warning.

  • Don’t use /WX to compile.

вредина

0 / 0 / 3

Регистрация: 08.10.2012

Сообщений: 141

1

Требуется директива препроцессору

14.11.2012, 15:39. Показов 17072. Ответов 3

Метки нет (Все метки)


у меня проблема такого плана (опишу все действия сначала, т.к. не уверен в их правильности):
создаю пустой проект, добавляю «файл с кодом» (разрешение .cs), пишу саму прогу

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h";
#include "stdio.h";
#include "math.h";
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    float x1, y1, x2, y2, dln;
    printf ("vvedite x1n");
    scanf_s("%f", &x1);
    printf ("vvedite y1n");
    scanf_s("%f", &y1);
    printf ("vvedite x2n");
    scanf_s("%f", &x2);
    printf ("vvedite y2n");
    scanf_s("%f", &y2);
    dln=sqrt(pow((x2-x1),2)+pow((y2-y1),2));
    printf("rasstjjnie mejdu tochkami %.2fn", dln);
    return 0;
}

и тут же мне внизу пишет ошибки
«требуется директива предпроцессору»
з.ы. может в начале еще что-то надо ?
у меня Visual Studio 2008 express edittion, скачанная с сайт ms

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Don’t worry, be happy

17779 / 10543 / 2035

Регистрация: 27.09.2012

Сообщений: 26,514

Записей в блоге: 1

14.11.2012, 16:13

2

точки с запятой после includ’ов уберите.

0

0 / 0 / 3

Регистрация: 08.10.2012

Сообщений: 141

14.11.2012, 19:12

 [ТС]

3

писал с ними и без, все равно ошибку выдает

перед самим #include больше ничего не надо ?

0

uburuntu

95 / 95 / 58

Регистрация: 04.10.2012

Сообщений: 189

14.11.2012, 19:19

4

Могу ошибаться, но попробуй так:

C
1
2
3
#include <stdio.h>
#include <math.h>
#include "stdafx.h"

А точки с запятой точно не надо

0

При создании решения VS2013 (перенесенного из VS8) я получаю следующую ошибку:

Ошибка 1 ошибка C2220: предупреждение рассматривается как ошибка — нет файла объекта
сгенерированный C: Program Files Microsoft Visual Studio
12.0 VC atlmfc include afx.h 38 Предупреждение 2, предупреждение C4996: ‘MBCS_Support_Deprecated_In_MFC’: поддержка MBCS в MFC устарела
и может быть удален в будущей версии MFC. C: Program
Файлы Microsoft Visual Studio 12.0 VC atlmfc include afx.h 38

Это вызвано следующим кодом:

    #ifdef _MBCS
// Warn about MBCS support being deprecated: see http://go.microsoft.com/fwlink/p/?LinkId=279048 for more information.
#pragma warning(push)
#pragma warning(1 : 4996)
inline __declspec(deprecated("MBCS support in MFC is deprecated and may be removed in a future version of MFC.")) void MBCS_Support_Deprecated_In_MFC() { }

class MBCS_Deprecated_MFC
{
public:
MBCS_Deprecated_MFC() { MBCS_Support_Deprecated_In_MFC(); }
};
#pragma warning(pop)
#endif

Как я могу найти, где _MBCS определяется в решении. Поиск не имеет никаких результатов.

4

Решение

_MBCS Символ будет определен в результате настроек в свойствах вашего проекта. смотреть на General->Character Set — это то, что добавляет необходимые записи в командную строку.

Чтобы продолжить использовать MBCS, вам необходимо установить дополнительную поддержку от Microsoft здесь

Как это отмечено в MSDN:

MSDN

Код в вашем вопросе на самом деле дает ссылку на этот блог, который обсуждает изменения и включает ссылку на скачивание:

// Warn about MBCS support being deprecated: see http://go.microsoft.com/fwlink/p/?LinkId=279048 for more information.

Таким образом, вы можете скачать патч по ссылке выше или перенести приложение в UNICODE.

7

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

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

When building a VS2013 solution (migrated from VS8) I get the following error :

Error 1 error C2220: warning treated as error — no ‘object’ file
generated C:Program FilesMicrosoft Visual Studio
12.0VCatlmfcincludeafx.h 38 Warning 2 warning C4996: ‘MBCS_Support_Deprecated_In_MFC’: MBCS support in MFC is deprecated
and may be removed in a future version of MFC. C:Program
FilesMicrosoft Visual Studio 12.0VCatlmfcincludeafx.h 38

This is caused bij the following code :

    #ifdef _MBCS
// Warn about MBCS support being deprecated: see http://go.microsoft.com/fwlink/p/?LinkId=279048 for more information.
#pragma warning(push)
#pragma warning(1 : 4996)
inline __declspec(deprecated("MBCS support in MFC is deprecated and may be removed in a future version of MFC.")) void MBCS_Support_Deprecated_In_MFC() { }

class MBCS_Deprecated_MFC
{
public:
MBCS_Deprecated_MFC() { MBCS_Support_Deprecated_In_MFC(); }
};
#pragma warning(pop)
#endif

How can I find where _MBCS is defined in the solution. Find doesn’t has any results.

asked Dec 20, 2013 at 15:24

pistach's user avatar

3

The _MBCS symbol will be defined as a result of the settings in your project properties. Look at General->Character Set — this is what adds the required entries to the command line.

To continue using MBCS, you need to install the optional support from Microsoft here

As it notes in MSDN:

msdn

The code in your question actually gives a link to this blog post, which discusses the changes and includes a link to the download:

// Warn about MBCS support being deprecated: see http://go.microsoft.com/fwlink/p/?LinkId=279048 for more information.

So, you can either download the patch from the link above or migrate your application to UNICODE.

answered Dec 20, 2013 at 15:32

Roger Rowland's user avatar

Roger RowlandRoger Rowland

25.6k11 gold badges71 silver badges113 bronze badges

6

When building a VS2013 solution (migrated from VS8) I get the following error :

Error 1 error C2220: warning treated as error — no ‘object’ file
generated C:Program FilesMicrosoft Visual Studio
12.0VCatlmfcincludeafx.h 38 Warning 2 warning C4996: ‘MBCS_Support_Deprecated_In_MFC’: MBCS support in MFC is deprecated
and may be removed in a future version of MFC. C:Program
FilesMicrosoft Visual Studio 12.0VCatlmfcincludeafx.h 38

This is caused bij the following code :

    #ifdef _MBCS
// Warn about MBCS support being deprecated: see http://go.microsoft.com/fwlink/p/?LinkId=279048 for more information.
#pragma warning(push)
#pragma warning(1 : 4996)
inline __declspec(deprecated("MBCS support in MFC is deprecated and may be removed in a future version of MFC.")) void MBCS_Support_Deprecated_In_MFC() { }

class MBCS_Deprecated_MFC
{
public:
    MBCS_Deprecated_MFC() { MBCS_Support_Deprecated_In_MFC(); }
};
#pragma warning(pop)
#endif

How can I find where _MBCS is defined in the solution. Find doesn’t has any results.

asked Dec 20, 2013 at 15:24

pistach's user avatar

3

The _MBCS symbol will be defined as a result of the settings in your project properties. Look at General->Character Set — this is what adds the required entries to the command line.

To continue using MBCS, you need to install the optional support from Microsoft here

As it notes in MSDN:

msdn

The code in your question actually gives a link to this blog post, which discusses the changes and includes a link to the download:

// Warn about MBCS support being deprecated: see http://go.microsoft.com/fwlink/p/?LinkId=279048 for more information.

So, you can either download the patch from the link above or migrate your application to UNICODE.

answered Dec 20, 2013 at 15:32

Roger Rowland's user avatar

Roger RowlandRoger Rowland

25.6k11 gold badges71 silver badges113 bronze badges

6

Предупреждение C4668 «STDC_WANT_SECURE_LIB» не задано как
макроопределение препроцессора, замена на «0» для «#if/#elif»

в справочнике написано:
Предупреждение компилятора (уровень 4) C4668
«символ» не определен в качестве макроса препроцессора и будет заменен в «директивах» на «0»
Символ, который не был определен, использовался с директивой препроцессора. Символ будет иметь значение false. Чтобы определить символ, можно использовать либо директиву #define , либо параметр компилятора /d .
Это предупреждение отключено по умолчанию. Подробнее: Выключенные по умолчанию предупреждения компилятора .

Вопрос не в том как это игнорировать а как это исправить

     #include <iostream>

int main()
{
    
    return 0;

}

Предупреждение C4668 «STDC_WANT_SECURE_LIB» не задано как макроопределение препроцессора, замена на «0» для «#if/#elif»

Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2220 следующее предупреждение рассматривается как ошибка Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includelimits.h 70
Предупреждение C4668 «STDC_WANT_SECURE_LIB» не задано как макроопределение препроцессора, замена на «0» для «#if/#elif» Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includelimits.h 70
Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includexmemory 162
Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includexmemory 172
Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includeatomic 292
Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includeatomic 308
Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includeatomic 325
Предупреждение C4365 аргумент: преобразование «long» в «unsigned int», несоответствие типов со знаком и без Proverka C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.29.30133includeatomic 388

Понравилась статья? Поделить с друзьями:
  • Ошибка c1206 kia ceed jd
  • Ошибка c1205 nissan x trail t31
  • Ошибка c1203 nissan x trail t31
  • Ошибка c1203 nissan qashqai j10
  • Ошибка c1201 тойота ленд крузер прадо