Opened 4 years ago
Closed 4 years ago
#883 closed ожидаются исправления (задача сдана)
WW #13
Reported by: | Igor Engel | Owned by: | Sokolov Viacheslav |
---|---|---|---|
Component: | WW_array | Version: | |
Keywords: | Cc: |
Description
Change History (4)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:3 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
╰─>$ make
mkdir -p obj
g++ -O2 -g -Wall -Werror -Wextra -std=c++17 -Iinclude -c -MMD -o obj/smoke_compile.o src/smoke_compile.cpp
g++ -O2 -g -Wall -Werror -Wextra -std=c++17 -Iinclude -c -MMD -o obj/main.o src/main.cpp
In file included from include/my_array.h:77,
from src/main.cpp:1:
include/my_array.hpp: In function ‘void test_something()’:
include/my_array.hpp:105:26: error: ‘b’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
105 | (*data) = (*data & ~(ONE << index)) | (static_cast<holder>(val) << index);
|
~~
cc1plus: all warnings being treated as errors
Makefile:20: recipe for target 'obj/main.o' failed
make: * [obj/main.o] Error 1
╰─>$ make
mkdir -p obj
g++ -O2 -g -Wall -Werror -Wextra -std=c++17 -Iinclude -c -MMD -o obj/smoke_compile.o src/smoke_compile.cpp
g++ -O2 -g -Wall -Werror -Wextra -std=c++17 -Iinclude -c -MMD -o obj/main.o src/main.cpp
g++ obj/smoke_compile.o obj/main.o -o lab_13
obj/main.o: In function `test_something()':
/usr/include/c++/9/ext/string_conversions.h:99: multiple definition of `test_something()'
obj/smoke_compile.o:/home/nicesap/HSE/svn/engel.igor/lab_13/src/smoke_compile.cpp:36: first defined here
obj/main.o: In function `main':
/usr/include/c++/9/bits/basic_string.h:157: multiple definition of `main'
obj/smoke_compile.o:/home/nicesap/HSE/svn/engel.igor/lab_13/src/smoke_compile.cpp:68: first defined here
obj/main.o: In function `std::cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > gnu_cxx::to_xstring<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char>(int (*)(char*, unsigned long, char const*, va_list_tag*), unsigned long, char const*, ...)':
/usr/include/c++/9/bits/char_traits.h:363: multiple definition of `lab_13::throw_out_of_range_error(unsigned long, unsigned long)'
obj/smoke_compile.o:/home/nicesap/HSE/svn/engel.igor/lab_13/include/my_array.hpp:11: first defined here
collect2: error: ld returned 1 exit status
Makefile:17: recipe for target 'lab_13' failed
make: * [lab_13] Error 1
comment:4 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
А, это какие-то мои локальные артефакты
9 class my_array {
final?
на самом деле все методы стоит пометить, как constexpr
/ = {} противоречит условию (просят оставить неинициализированной)
а rvalue?
кажется, лучше вернуть просто bool
49 constexpr static std::size_t N_holder = (N + holder_size - 1) / holder_size;
может переполниться при большом N
assert все же не помешает
сообщение об ошибке можно сделать более информативным, дополнив его информацией об индексе
1 - это signed (int), лучше делать явный каст к нужному (unsigned) типу
100 (*data) |= (1 << index);
101 } else {
102 (*data) &= ~(1 << index);
103 }
возможно, эта реализация медленнее, чем без if (потенциально другой набор ассемблерных инструкций)