Проблема при компиляции
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Проблема при компиляции - 2011-03-01 23:43:13.026666
|
|
|
0tnbo6ap44
Сообщений: 1
Оценки: 0
Присоединился: 2011-03-01 21:30:35.923333
|
quote:
#include <stdlib.h> #include <stdio.h> #include <windows.h> void foo(DWORD d1) { } int main(int argc, char *argv[]) { foo(0xFE+1); return 0; } test.cpp:11:6: invalid suffix "+1" on integer constant Что означает эта ошибка, и почему так нельзя делать?
|
|
|
RE: Проблема при компиляции - 2011-03-02 03:30:38.743333
|
|
|
vetronom
Сообщений: 9
Оценки: 0
Присоединился: 2011-03-01 19:22:18.916666
|
компайлеру мерещится E+1 :D (типа плавающая запятая) нужно вставить пробел перед +1, и всё пройдёт
|
|
|
RE: Проблема при компиляции - 2011-03-02 20:41:08.010000
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Или единицу в 16-ричном виде записать.
|
|
|
RE: Проблема при компиляции - 2011-03-02 20:49:38.843333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Все же не понимаю сложность парсинга данной конструкции компилятором.
|
|
|
RE: Проблема при компиляции - 2011-03-02 21:00:59.293333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
А ты выполни код:printf ("%e\n", 1.2345); Видишь какая хитрая экспоненциальная запись числа? Там у числа есть суффикс, знак + (в других ситуациях может быть -), и потом порядок. Вот здесь компилятор и видит этот суффикс, но не знает как его присобачить к шестнадцатеричному числу.
|
|
|
RE: Проблема при компиляции - 2011-03-02 21:08:10.046666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Все из за "E" значит, и как с этим боротся? foo(0xFF-1); ? Не удобно так, но деваться некуда. Благодарю за ответы.
|
|
|
RE: Проблема при компиляции - 2011-03-03 16:27:48.920000
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
А чего там у вас за компилятор-то? Я попробовал скомпилить код из первого поста в 2008-студии, так никаких ошибок и предупреждений, все ОК.
|
|
|
RE: Проблема при компиляции - 2011-03-03 16:34:20.140000
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
gcc
|
|
|
RE: Проблема при компиляции - 2011-03-03 18:42:18.306666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Баг в гцц
|
|
|
RE: Проблема при компиляции - 2011-03-03 23:27:05.510000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: _SaZ_ Баг в гцц Это достоверная информация или личное мнение? Я к тому, что моё личное мнение именно такое – баг. Но мне лениво лезть в стандарт на C, и вычитывать какое же поведение должно быть верным. Знать хочется, но выяснять лень. quote:
ORIGINAL: Sunzer Все из за "E" значит, и как с этим боротся? foo(0xFF-1); ? Не удобно так, но деваться некуда. Просто придерживайся какого-нибудь из пристойных стилей оформления кода и ставь пробелы вокруг бинарных операторов. Читабельность будет выше. И по-ходу дела, читабельность улучшится не только для гуманоидов, но и для роботов-компиляторов тоже.
|
|
|
RE: Проблема при компиляции - 2011-03-04 01:43:33.513333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Я позволил себе поплагиатить, вот что из этого вышло: http://www.rsdn.ru/forum/cpp/4178550.flat.aspx
|
|
|
RE: Проблема при компиляции - 2011-03-04 17:48:27.846666
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
А Dev-C++ это тоже gcc? Если да, то вот еще глюк интересный, может уже кто сталкивался, я лично впервые. Вот это у меня не компилируется
#include <iostream>
using namespace std;
void plus()
{
cout << 2 + 2 << endl;
}
int main()
{
plus();
return 0;
}
Полчаса думал, что это значит, только потом начал догадываться[:-]
|
|
|
RE: Проблема при компиляции - 2011-03-04 17:56:05.923333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Зарезервированное слово "plus"? quote:
А Dev-C++ это тоже gcc? Да, он использует тоже MinGW.
|
|
|
RE: Проблема при компиляции - 2011-03-04 18:17:31.863333
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
quote:
ORIGINAL: Sunzer Зарезервированное слово "plus"? Да, только это слово не есть зарезервированное/ключевое слово языка. Это из недр STL, но я же не подключал никаких заголовков. Считаю баг однозначно.
|
|
|
RE: Проблема при компиляции - 2011-03-04 20:18:48.650000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
http://codepad.org/qrxOs92i - дело тут не в STL Но, вообще, странно…
|
|
|
RE: Проблема при компиляции - 2011-03-04 21:35:41.270000
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Может топик уже стоит переименовать в "Баги в gcc" ?
|
|
|
RE: Проблема при компиляции - 2011-03-04 21:40:09.866666
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
quote:
ORIGINAL: _SaZ_ Но, вообще, странно… Мне выдал такую ошибку: C:\Dev-Cpp\main.cpp In function `int main()': 'plus' undeclared (first use this function). Полный бред. Причина теперь понятна, компилятор включил слово "plus" в пространство имен std. Студия, например, этого не делает и мне лично это кажется правильнее. Хорошо еще, что функциию я назвал "plus". Слово, конечно, подозрительное и сразу понятно куда копать. Но если бы случайно я назвал ее: multiplies, divides, greater, not_equal_to, logical_or … Много еще. Я бы точно голову сломал, ищя ошибку. Особенно с такой подсказкой, которую мне выдал компилятор.
|
|
|
RE: Проблема при компиляции - 2011-03-04 22:04:57.130000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: Sunzer Единица для примера была, сделал так: […] А… Ну-ну. Успехов. quote:
ORIGINAL: Klofelin Я бы точно голову сломал, ищя ошибку. Особенно с такой подсказкой, которую мне выдал компилятор. Да ладно, всё понятно. Видно же по тексту ошибки, что plus просто где-то уже объявлялся. Но, то ли у них gcc какой-то левый, то ли они копируют лишь первые строки ошибки. Мне gcc говорит следующее:[rgo tmp]$ g++ -c tmp.cc
tmp.cc: In function ‘int main()’:
tmp.cc:11: ошибка: reference to ‘plus’ is ambiguous
tmp.cc:4: ошибка: candidates are: void plus()
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/include/g++-v4/bits/stl_function.h:135: ошибка: template<class _Tp> struct std::plus
tmp.cc:11: ошибка: reference to ‘plus’ is ambiguous
tmp.cc:4: ошибка: candidates are: void plus()
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.4/include/g++-v4/bits/stl_function.h:135: ошибка: template<class _Tp> struct std::plus Всё понятно без дальнейших слов. iostream, судя по всему, зачем-то экспортирует struct plus, беря его из stl_functional.h
|
|
|
RE: Проблема при компиляции - 2011-03-06 04:26:12.496666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: Sunzer Может топик уже стоит переименовать в "Баги в gcc" ? в этом треде нет ничего, что можно было бы считать багом - во всяком случае, в gcc если уж вам так хочется есть кактус C++ - делайте это, по крайней мере, с довольным видом
|
|
|
|
|