Меню

Недопустимое сочетание спецификаторов типа ошибка c

This works in xcode, but not visual studio. The error is

error C2236: unexpected ‘enum’ ‘abc::def::`anonymous-namespace’::’. Did you forget a ‘;’?

I can’t figure out what is wrong.

namespace abc {
namespace def {

namespace {

long long enum {
  aaa = 1L,
  bbb = 2L,
};

}
}
}

PlasmaHH's user avatar

PlasmaHH

15.5k5 gold badges43 silver badges57 bronze badges

asked Oct 16, 2011 at 20:23

marathon's user avatar

4

That syntax is bizarre, I don’t see how it would work anywhere (EDIT: apparently it’s a GCC extension — thanks @PlasmaHH). This is the portable C++11 syntax you want:

enum : long long {
    aaa = 1LL,
    bbb = 2LL
};

answered Oct 16, 2011 at 20:25

ildjarn's user avatar

ildjarnildjarn

61.7k9 gold badges125 silver badges210 bronze badges

This works in xcode, but not visual studio. The error is

error C2236: unexpected ‘enum’ ‘abc::def::`anonymous-namespace’::’. Did you forget a ‘;’?

I can’t figure out what is wrong.

namespace abc {
namespace def {

namespace {

long long enum {
  aaa = 1L,
  bbb = 2L,
};

}
}
}

PlasmaHH's user avatar

PlasmaHH

15.5k5 gold badges43 silver badges57 bronze badges

asked Oct 16, 2011 at 20:23

marathon's user avatar

4

That syntax is bizarre, I don’t see how it would work anywhere (EDIT: apparently it’s a GCC extension — thanks @PlasmaHH). This is the portable C++11 syntax you want:

enum : long long {
    aaa = 1LL,
    bbb = 2LL
};

answered Oct 16, 2011 at 20:25

ildjarn's user avatar

ildjarnildjarn

61.7k9 gold badges125 silver badges210 bronze badges

I’m getting a compiler error on FreeBSD:

error: invalid combination of multiple type-specifiers

From the C++ Code:

typedef unsigned off_t uoff_t;

Not sure what the gcc compiler is trying to tell me.

asked Oct 23, 2010 at 18:29

WilliamKF's user avatar

WilliamKFWilliamKF

40.2k65 gold badges191 silver badges291 bronze badges

Unless off_t is a macro, it’s simply a syntax error.

unsigned is not something you can add to a typedef’ed type or use to modify such a type.

Cheers & hth.,

answered Oct 23, 2010 at 18:34

Cheers and hth. - Alf's user avatar

Use typedef std::make_unsigned_t< off_t > uoff_t; since C++14 instead to achieve the desired effect.

Use typedef std::make_unsigned< off_t >::type uoff_t; since C++11.

Use typedef boost::make_unsigned< off_t >::type uoff_t; before C++11.

imz -- Ivan Zakharyaschev's user avatar

answered Oct 23, 2010 at 18:41

usta's user avatar

I’m getting a compiler error on FreeBSD:

error: invalid combination of multiple type-specifiers

From the C++ Code:

typedef unsigned off_t uoff_t;

Not sure what the gcc compiler is trying to tell me.

asked Oct 23, 2010 at 18:29

WilliamKF's user avatar

WilliamKFWilliamKF

40.2k65 gold badges191 silver badges291 bronze badges

Unless off_t is a macro, it’s simply a syntax error.

unsigned is not something you can add to a typedef’ed type or use to modify such a type.

Cheers & hth.,

answered Oct 23, 2010 at 18:34

Cheers and hth. - Alf's user avatar

Use typedef std::make_unsigned_t< off_t > uoff_t; since C++14 instead to achieve the desired effect.

Use typedef std::make_unsigned< off_t >::type uoff_t; since C++11.

Use typedef boost::make_unsigned< off_t >::type uoff_t; before C++11.

imz -- Ivan Zakharyaschev's user avatar

answered Oct 23, 2010 at 18:41

usta's user avatar

Недопустимая комбинация спецификаторов типа?

Это работает в xcode, но не в Visual Studio. Ошибка

ошибка C2236: неожиданное перечисление abc :: def :: `анонимное пространство имен ‘::’. Вы забыли ‘;’?

Я не могу понять, что случилось.

namespace abc {
namespace def {

namespace {

long long enum {
  aaa = 1L,
  bbb = 2L,
};

}
}
}

Этот синтаксис странный, я не понимаю, как он будет работать где угодно (РЕДАКТИРОВАТЬ: очевидно, это расширение GCC — спасибо @PlasmaHH). Это переносимый синтаксис C ++ 11, который вам нужен:

enum : long long {
    aaa = 1LL,
    bbb = 2LL
};

ответ дан 16 окт ’11, 21:10

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

c++
visual-studio-2010
namespaces
compiler-errors
c++11

or задайте свой вопрос.

grosssmile

1 / 1 / 0

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

Сообщений: 37

1

27.09.2012, 23:11. Показов 48474. Ответов 5

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


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdio.h>
using namespace std;
main()
{
    const int m=5;
    const int n=6;
    float A[m][n];
    float B[m][n];
    int zero_A=0,zero_B=0;
    float *p1,*p2,tempA,tempB,max_A,max_B,max_negativ_A,max_negativ_B;
    srand(time(NULL));
    //Заполняем массивы случайными значениями и выводим их на экран
    for(int i=0; i<m; i++)
    {
        for(int j=0;j<n; j++)
        {
            A[i][j]=float(rand()%40-20);
            cout<<A[i][j]<<"    ";
        }
        cout<<"  ";
    }
    cout<<"  ";
    for (int i=0; i<m; i++)
    {
        for(int j=0; j<n; j++)
        {
            B[i][j]=rand()%40-15;
            cout<<B[i][j]<<"    ";
        }
        cout<<"  ";
    }
    p1=&A[0][0];
    p2=&B[0][0];
    //Находим первые отрицательные элементы в массивах A и B
    for(int i=0; i<m; i++)
    {
        for(int j=0; j<n; j++)
        {
            if(*p1<0) max_negativ_A=*p1;
            if(*p2<0) max_negativ_B=*p2;
            p1++;
            p2++;
        }
    }
    //Находим колличество нулевых значений и максимальное значение в каждом массиве
    //и максимальное отрицательное значение в массивах
    p1=&A[0][0];
    p2=&B[0][0];
    max_A=*p1;
    max_B=*p2;
    for(int i=0; i<m; i++)
    {
        for(int j=0; j<n; j++)
        {
            if(*p1==0) zero_A++;
            if(*p2==0) zero_B++;
            if(*p1>max_A) max_A=*p1;
            if(*p2>max_B) max_B=*p2;
            if((*p1<0)&&(*p1>max_negativ_A))
max_negativ_A=*p1;
            if((*p2<0)&&(*p2>max_negativ_B))
max_negativ_B=*p2;
            p1++;
            p2++;
        }
    }
    cout<<"  ";
    cout<<"Max znachenie massiva A"<<max_A<<"  ";
    cout<<"Max znachenie massiva B"<<max_B<<"  ";
    cout<<"Colichestvo nuley v massive A"<<zero_A<<"  ";
    cout<<"Colichestvo nuley v massive B"<<zero_B<<"  ";
    cout<<"Max otricatelnoe znachenie v massive A"<<max_negativ_A<<"  ";
    cout<<"Max otricatelnoe znachenie v massive B"<<max_negativ_B<<"  ";
    getch();
}

ошибки:
error C4430: отсутствует спецификатор типа — предполагается int. Примечание. C++ не поддерживает int по умолчанию
warning C4244: аргумент: преобразование «time_t» в «unsigned int», возможна потеря данных
warning C4244: =: преобразование «int» в «float», возможна потеря данных
не могу разобраться

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



0



alsav22

5493 / 4888 / 831

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

Сообщений: 13,587

27.09.2012, 23:20

2

C++
1
2
3
4
5
int main()
{
...
return 0;
}
C++
1
B[i][j]=float(rand()%40-15);



3



Gepar

1186 / 542 / 78

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

Сообщений: 3,517

28.09.2012, 11:43

3

int автоматически подставлялся к любой функции где не указан тип возврата только в си.
Там можно было написать

C
1
2
3
4
strange()
{
return 2;
}

при компиляции компилятор сам всё подставлял и получалось на выходе

C
1
2
3
4
int strange()
{
return 2;
}

и всё было окей
В с++ нужно обязательно указывать ВСЕГДА тип возврата функции, в т.ч и для main.



1



Герц

527 / 344 / 12

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

Сообщений: 1,076

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

28.09.2012, 13:16

4

Не по теме:

У тебя же точно написано, в чем проблема, дважды щелкнул по строчке с ошибкой — и тебе даже покажут, где именно в редакторе находится проблемная строка.

А где ты такой пример взял, что у тебя main без типа?
Почему сразу не такой тогда?:-)

C++
1
2
3
4
5
6
main(argc, argv)
int argc;
char *argv[];
{
    return 0;
}



0



1186 / 542 / 78

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

Сообщений: 3,517

28.09.2012, 17:57

5

Цитата
Сообщение от Герц
Посмотреть сообщение

А где ты такой пример взял, что у тебя main без типа?

Логично что в какой-то старой книге по си рекомендованной преподавателем в которой, как они любят говорить «ничего с тех пор не изменилось».



0



1 / 1 / 0

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

Сообщений: 37

28.09.2012, 19:04

 [ТС]

6

Цитата
Сообщение от Gepar
Посмотреть сообщение

Логично что в какой-то старой книге по си рекомендованной преподавателем в которой, как они любят говорить «ничего с тех пор не изменилось».

Именно так оно и было.
Спасибо за помощь



0



0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Недопустимая таблица читов ошибка выполнения lua скрипта
  • Недопустимая ссылка консолидации excel ошибка