【发布时间】:2018-02-18 08:00:46
【问题描述】:
背景
目前我正在使用 C++ MySQL 连接器与数据库通信,有时我需要通过连接发送硬编码命令。就像很多次一样,我犯了错误/错别字等等。这是一个非常基本的数据库系统课程,因此不涉及任何行业。
问题
是否有可能为另一种语言实现constexpr 编译器,它只运行词法、语法和语义分析并在发现错误时报告错误?或者可能是一些额外的编译步骤?
示例
假设我想发送这个命令:
SELECT * FROM Persons
但是,我忘记输入M:
SELECT * FRO Persons
我会在运行时发现问题,如果编译器知道该语言,它可能会被捕获。我解决这个问题的唯一想法是预处理器的疯狂。
在 C++ 中,我会这样称呼它:
auto statement = sql_parse("...");
如果出现问题,希望它会导致编译错误。
【问题讨论】:
-
最好在错误检查最好的自然环境中检查quires。
-
“如果编译器知道该语言,它可能会被捕获” 你如何期望 c++ 编译器知道 SQL 语言的细节??
-
您的意思是您的 c++ 代码中的字符串中有 SQL 查询,并希望 c++ 编译器在其中找到 SQL 语法错误?
-
我认为你不能,据此:stackoverflow.com/questions/7508475/…
-
嵌入 SQL 通常是通过某种预处理器(通常不是 C 预处理器)完成的 - 请参阅 en.wikipedia.org/wiki/Embedded_SQL
标签: c++ compilation