c++ - C++ 编译错误:错误:“尝试”之前的预期主表达式
问题描述
错误:
/home/mike/Documents/PROJECTS/BUN/blib/bun/impl/DbBackend.hpp:61:21: error: expected primary-expression before ‘try’
try {
^~~
/home/mike/Documents/PROJECTS/BUN/blib/bun/impl/DbBackend.hpp:67:21: error: expected ‘,’ or ‘;’ before ‘catch’
catch (std::exception const &except) {
^~~~~
In file included from blib/bun/bun.hpp:3:0,
from main.cpp:12:
部分代码:
bool connect(std::string const &in_params) {
const auto backend_factory =
#ifdef BUN_SQLITE
soci::sqlite3;
#elif defined(BUN_POSTGRES)
soci::postgresql;
#elif defined(BUN_MYSQL)
soci::mysql;
#endif
try {
if (!_ok) {
_sql_session.open(backend_factory, in_params);
_ok = true;
}
}
catch (std::exception const &except) {
l().error(except.what());
_ok = false;
}
return _ok;
}
soci::session &session() {
return _sql_session;
}
};
生成文件:
LDFLAGS := -L/usr/local/lib \
-I/home/mike/Documents/PROJECTS/BUN/third_party/unqlite -I/home/mike/Documents/PROJECTS/BUN -I/home/mike/Documents/PROJECTS/BUN/third_party
# LDLIBS := -lpthread -lresolv
EXECUTABLE := main
# CXXFLAGS=-g -std=c++11 -Wall
CXXFLAGS=-g -std=c++17 -Wall
all: $(EXECUTABLE)
clean:
rm -f $(EXECUTABLE) *.o
我正在尝试使用 Bun orm。在我的程序中,我只包含了 bun.hpp 文件。在尝试之前我不明白编译器有什么问题?也许是因为#ifdef
上面的那个运营商 try ?它还说它预期,
或;
在捕获之前......
我正在尝试 ubuntu 18.04
解决方案
您的编译行没有定义任何选项(除非它们来自文件内部或另一个标题),因此您得到:
bool connect(std::string const &in_params) {
const auto backend_factory =
try {
要确认您可以在 g++ 行中添加“-E”以在预处理器之后获取源代码。
另一种可能性是您定义了多个。你总是可以#undef
其中 2 个和#define
最后一个来查看它是否以这种方式编译(就像测试一样)。
推荐阅读
- pug - Thymeleaf:将字符串参数传递给 mixins 函数
- kotlin - launch 仅从 Kotlin 1.3 开始可用,不能在 Kotlin 1.2 中使用
- modx - MODX无法保存
- r - 如何在 R lattice::wireframe 图中添加背景网格?
- jenkins - 代码推送到 github 后触发 Jenkins 管道作业
- r - 如何在 R 中自动删除时间序列数据中的噪声(伪影)
- mysql - 如何将三个 SQL 与具有相同字段 ne 的两个表连接起来
- dart - 在颤动中获取设备IMEI
- azure-devops - 将公共包推送到 azure devops feed
- python - python中的process_time()和连续调用