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,
};
}
}
}
- c++
- visual-studio-2010
- namespaces
- compiler-errors
- c++11
PlasmaHH
15.7k5 gold badges44 silver badges57 bronze badges
asked Oct 16, 2011 at 20:23
marathonmarathon
7,88117 gold badges75 silver badges138 bronze badges
4
-
Which language is this? This is definitely not legal C++98/03, and I’m not sure it’s the correct syntax for C++11’s typed enums. In any event, beware that MSVC2010 is a weird hybrid compiler whose language is a bit more than C++03, but not quite C++11, so you can’t really expect anything.
Oct 16, 2011 at 20:26
-
Does msvc already support c++11 enums?
Oct 16, 2011 at 20:26
-
@PlasmaHH : Not full C++11 enum support, no, but it has allowed specifying the underlying type (using C++11 syntax) since VC++ 2005.
Oct 16, 2011 at 20:28
-
@ildjarn: Ah, ok, then my guess is that the OP somehow confuses C++11 and gcc extension syntax (since the syntax provided is a gcc extension)
Oct 16, 2011 at 20:34
1 Answer
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
ildjarnildjarn
62.1k9 gold badges128 silver badges211 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
15.6k5 gold badges43 silver badges57 bronze badges
asked Oct 16, 2011 at 20:23
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
ildjarnildjarn
61.9k9 gold badges126 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
15.5k5 gold badges43 silver badges57 bronze badges
asked Oct 16, 2011 at 20:23
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
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
15.5k5 gold badges43 silver badges57 bronze badges
asked Oct 16, 2011 at 20:23
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
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
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
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.
answered Oct 23, 2010 at 18:41
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
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
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.
answered Oct 23, 2010 at 18:41
Недопустимая комбинация спецификаторов типа?
Это работает в 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 Метки нет (Все метки)
ошибки:
__________________ 0 |
alsav22 5493 / 4888 / 831 Регистрация: 04.06.2011 Сообщений: 13,587 |
||||||||
27.09.2012, 23:20 |
2 |
|||||||
3 |
Gepar 1186 / 542 / 78 Регистрация: 01.07.2009 Сообщений: 3,517 |
||||||||
28.09.2012, 11:43 |
3 |
|||||||
int автоматически подставлялся к любой функции где не указан тип возврата только в си.
при компиляции компилятор сам всё подставлял и получалось на выходе
и всё было окей 1 |
Герц 527 / 344 / 12 Регистрация: 05.11.2010 Сообщений: 1,076 Записей в блоге: 1 |
||||
28.09.2012, 13:16 |
4 |
|||
Не по теме: У тебя же точно написано, в чем проблема, дважды щелкнул по строчке с ошибкой — и тебе даже покажут, где именно в редакторе находится проблемная строка.
А где ты такой пример взял, что у тебя main без типа?
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 |
Логично что в какой-то старой книге по си рекомендованной преподавателем в которой, как они любят говорить «ничего с тех пор не изменилось». Именно так оно и было. 0 |
#c #visual-studio-2010 #namespaces #compiler-errors #c 11
#c #visual-studio-2010 #пространства имен #ошибки компилятора #c 11
Вопрос:
Это работает в xcode, но не в Visual Studio. Ошибка
ошибка C2236: неожиданное ‘перечисление’ ‘abc:: def::`анонимное пространство имен’::’. Вы забыли ‘;’?
Я не могу понять, что не так.
namespace abc {
namespace def {
namespace {
long long enum {
aaa = 1L,
bbb = 2L,
};
}
}
}
Комментарии:
1. Что это за язык? Это определенно не является законным C 98/03, и я не уверен, что это правильный синтаксис для типизированных перечислений C 11. В любом случае, имейте в виду, что MSVC2010 — это странный гибридный компилятор, язык которого немного больше, чем C 03, но не совсем C 11, поэтому вы не можете ничего ожидать.
2. Поддерживает ли msvc уже перечисления c 11?
3. @PlasmaHH : Не полная поддержка перечислений C 11, нет, но это позволило указать базовый тип (используя синтаксис C 11) с VC 2005.
4. @ildjarn: Ах, хорошо, тогда я предполагаю, что OP каким-то образом путает синтаксис расширения C 11 и gcc (поскольку предоставленный синтаксис является расширением gcc)
Ответ №1:
Этот синтаксис странный, я не понимаю, как он будет работать где угодно (РЕДАКТИРОВАТЬ: по-видимому, это расширение GCC — спасибо @PlasmaHH). Это переносимый синтаксис C 11, который вам нужен:
enum : long long {
aaa = 1LL,
bbb = 2LL
};
Это работает в xcode, но не в Visual Studio. Ошибка
Ошибка C2236: неожиданное перечисление abc :: def :: `анонимное пространство имен ‘::’. Вы забыли ‘;’?
Я не могу понять, что не так.
namespace abc {
namespace def {
namespace {
long long enum {
aaa = 1L,
bbb = 2L,
};
}
}
}
1 ответ
Лучший ответ
Этот синтаксис странный, я не понимаю, как он будет работать где угодно (РЕДАКТИРОВАТЬ: очевидно, это расширение GCC — спасибо @PlasmaHH). Это переносимый синтаксис C ++ 11, который вам нужен:
enum : long long {
aaa = 1LL,
bbb = 2LL
};
5
ildjarn
17 Окт 2011 в 00:36
Что это значит: «ошибка: недопустимая комбинация нескольких спецификаторов типов»
Я получаю сообщение об ошибке компилятора во FreeBSD:
error: invalid combination of multiple type-specifiers
Из кода C++:
typedef unsigned off_t uoff_t;
Не уверен, что компилятор gcc пытается сказать мне.
2010-10-23 18:29
2
ответа
Решение
Использование typedef boost::make_unsigned< off_t >::type uoff_t;
вместо этого, чтобы достичь желаемого эффекта.
2010-10-23 18:41
Если не off_t
это макрос, это просто синтаксическая ошибка.
unsigned
это не то, что вы можете добавить к типу с определением типа или использовать для изменения такого типа.
Ура & hth.,
2010-10-23 18:34
Что это значит: «ошибка: недопустимая комбинация нескольких спецификаторов типов»
Я получаю сообщение об ошибке компилятора во FreeBSD:
error: invalid combination of multiple type-specifiers
Из кода C++:
typedef unsigned off_t uoff_t;
Не уверен, что компилятор gcc пытается сказать мне.
2010-10-23 18:29
2
ответа
Решение
Использование typedef boost::make_unsigned< off_t >::type uoff_t;
вместо этого, чтобы достичь желаемого эффекта.
2010-10-23 18:41
Если не off_t
это макрос, это просто синтаксическая ошибка.
unsigned
это не то, что вы можете добавить к типу с определением типа или использовать для изменения такого типа.
Ура & hth.,
2010-10-23 18:34
Это работает в xcode, но не в Visual Studio. Ошибка
Ошибка C2236: неожиданное перечисление abc :: def :: `анонимное пространство имен ‘::’. Вы забыли ‘;’?
Я не могу понять, что не так.
namespace abc {
namespace def {
namespace {
long long enum {
aaa = 1L,
bbb = 2L,
};
}
}
}
1 ответ
Лучший ответ
Этот синтаксис странный, я не понимаю, как он будет работать где угодно (РЕДАКТИРОВАТЬ: очевидно, это расширение GCC — спасибо @PlasmaHH). Это переносимый синтаксис C ++ 11, который вам нужен:
enum : long long {
aaa = 1LL,
bbb = 2LL
};
5
ildjarn
17 Окт 2011 в 00:36
#c #visual-studio-2010 #namespaces #compiler-errors #c 11
#c #visual-studio-2010 #пространства имен #ошибки компилятора #c 11
Вопрос:
Это работает в xcode, но не в Visual Studio. Ошибка
ошибка C2236: неожиданное ‘перечисление’ ‘abc:: def::`анонимное пространство имен’::’. Вы забыли ‘;’?
Я не могу понять, что не так.
namespace abc {
namespace def {
namespace {
long long enum {
aaa = 1L,
bbb = 2L,
};
}
}
}
Комментарии:
1. Что это за язык? Это определенно не является законным C 98/03, и я не уверен, что это правильный синтаксис для типизированных перечислений C 11. В любом случае, имейте в виду, что MSVC2010 — это странный гибридный компилятор, язык которого немного больше, чем C 03, но не совсем C 11, поэтому вы не можете ничего ожидать.
2. Поддерживает ли msvc уже перечисления c 11?
3. @PlasmaHH : Не полная поддержка перечислений C 11, нет, но это позволило указать базовый тип (используя синтаксис C 11) с VC 2005.
4. @ildjarn: Ах, хорошо, тогда я предполагаю, что OP каким-то образом путает синтаксис расширения C 11 и gcc (поскольку предоставленный синтаксис является расширением gcc)
Ответ №1:
Этот синтаксис странный, я не понимаю, как он будет работать где угодно (РЕДАКТИРОВАТЬ: по-видимому, это расширение GCC — спасибо @PlasmaHH). Это переносимый синтаксис C 11, который вам нужен:
enum : long long {
aaa = 1LL,
bbb = 2LL
};