ожидаемый строковый литерал перед ')' при использовании static_assert в c ++ 17 - PullRequest
1 голос
/ 03 ноября 2019

Так что, когда я пытаюсь построить свое приложение на c ++, я получаю ошибку во время компиляции в следующем фрагменте кода

static_assert(sizeof(int32_t) == 4)

Это ошибка, которую я получаю expected string-literal before ‘)’

OnВ ходе некоторых исследований я обнаружил, что static_assert требует параметра сообщения в c ++ 11, который был исключен в c ++ 17. Так выглядит ли это, что мое приложение компилируется для c ++ 11?

В моем файле CMakeLists.txt у меня есть следующие строки

set(CMAKE_CXX_STANDARD 17)              
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Разве эти строки не должны создавать мое приложение для c ++ 17?

Спасибо!

Обновление 1 - Полная трассировка ошибок

In file included from <project_root>/src/include/buffer/buffer_pool_manager.h:22:0,
                 from <project_root>/src/include/catalog/simple_catalog.h:8,
                 from <project_root>/src/include/catalog/table_generator.h:6,
                 from <project_root>/src/catalog/table_generator.cpp:1:
<project_root>/src/include/storage/page/page.h:70:39: error: expected ‘,’ before ‘)’ token
   static_assert(sizeof(page_id_t) == 4);
                                       ^
<project_root>/src/include/storage/page/page.h:70:39: error: expected string-literal before ‘)’ token
In file included from <project_root>/src/include/buffer/buffer_pool_manager.h:22:0,
                 from <project_root>/src/buffer/buffer_pool_manager.cpp:13:
<project_root>/src/include/storage/page/page.h:70:39: error: expected ‘,’ before ‘)’ token
   static_assert(sizeof(page_id_t) == 4);
                                       ^
<project_root>/src/include/storage/page/page.h:70:39: error: expected string-literal before ‘)’ token
src/CMakeFiles/bustub_shared.dir/build.make:62: recipe for target 'src/CMakeFiles/bustub_shared.dir/buffer/buffer_pool_manager.cpp.o' failed
make[2]: *** [src/CMakeFiles/bustub_shared.dir/buffer/buffer_pool_manager.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
src/CMakeFiles/bustub_shared.dir/build.make:114: recipe for target 'src/CMakeFiles/bustub_shared.dir/catalog/table_generator.cpp.o' failed
make[2]: *** [src/CMakeFiles/bustub_shared.dir/catalog/table_generator.cpp.o] Error 1
CMakeFiles/Makefile2:383: recipe for target 'src/CMakeFiles/bustub_shared.dir/all' failed
make[1]: *** [src/CMakeFiles/bustub_shared.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
...