【发布时间】:2018-03-19 09:43:11
【问题描述】:
用于我的家庭自动化项目的小微控制器 (arduino) 监听引脚高低状态变化。当引脚状态发生变化时,
函数的调用如下:
NotSureYet sendMessageOnPinChange(8, "You turned on the kitchen lights ");
退货
- 该函数将检查它是否被调用时 第一个参数是一个 integer 范围从 0 到 16,否则它返回“错误”(例如:你应该使用...之间的数字)
- 该函数检查第二个参数是否为 char *(字符串)类型,否则返回错误 (例如:消息不是字符串)
- 该函数还会返回消息是否“发送”正确
问题 返回类型 NotSureYet 是什么?
当它返回“消息发送成功”时,这不是错误,而在任何其他情况下,它返回“错误整数”或“错误消息”或... 所以我不是在寻找错误检查,我在寻找'NOT_SURE_YET'的返回类型
【问题讨论】:
-
在 C 中不能在运行时检查类型。
-
您看到这么多项目实际上这样做是有充分理由的:P 因为 C 语言级别非常低,您必须自己构建所有内容,包括复杂的错误检查。
-
@melpomene 关于编译时与运行时检查也是正确的。任何范围检查等也必须由您构建:P
-
@Ahmed Masud:那么你将如何从这个函数返回,你会返回你自己的“错误”结构吗?
-
@hewi 通常 int 仍在 C 中使用,因为 int 很小并且保留在 CPU 寄存器中。例如,您可以将错误编码为 int 中的位,然后附带一串错误消息。这就是 errno/perror 所做的......只需遵循相同的配方即可。事实上,您可以
augmentperror/strerror 并使用errno。这样,任何系统错误都会定期出现,并且您自己的错误也会出现。如果您想捕获复杂的数据,请创建一个捕获更多信息的报告结构。恕我直言,保持简单,错误处理本身不应导致错误。 :)