如何解决使用 const 或 define 时,初始化元素在 C 中不是常量
1.环境
- 操作系统:
Ubuntu 18.04 x64
- 构建工具:
apt install build-essential cmake -y
2.代码
文件名:repl.c
#include <stdint.h>
...
const uint32_t PAGE_SIZE = 4096; // 4*1024 bytes
#define TABLE_MAX_PAGES 100
const uint32_t ROWS_PER_PAGE = PAGE_SIZE / ROW_SIZE;
const uint32_t TABLE_MAX_ROWS = ROWS_PER_PAGE * TABLE_MAX_PAGES;
...
3. CMakefile
文件名:CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(sqlITE_CLONE)
add_executable(a.out repl.c)
4.错误重现
尝试构建:
cmake .
make
但是得到如下错误:
/home/ws/sqlite_clone_in_c/P3/repl.c:157:32: error: initializer element is not constant
const uint32_t ROWS_PER_PAGE = PAGE_SIZE / ROW_SIZE;
^~~~~~~~~
/home/ws/sqlite_clone_in_c/P3/repl.c:158:33: error: initializer element is not constant
const uint32_t TABLE_MAX_ROWS = ROWS_PER_PAGE * TABLE_MAX_PAGES;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。