This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2433:DriverLib 不应定义 NDEBUG

Guru**** 2555870 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/777289/msp430fr2433-driverlib-should-not-define-ndebug

器件型号:MSP430FR2433
主题中讨论的其他器件:MSP430WARE

正如在链接到此问题的前一个线程("Driver Lib FR5xx_6xx NDEBUG")中所讨论的、 DriverLib 在 driverlib 文件 hw_memmap.h 中定义了 NDEBUG 宏、这似乎是非标准做法。  非标准、因为许多(大多数?) 程序员希望默认情况下不定义 NDEBUG、 并且许多程序员接受过在命令行或特定于项目的文件中定义 NDEBUG 的培训。  

因此、如果用户包含 DriverLib 中的头文件、则会禁用源代码中后面的任何 assert()语句(实际上是宏)、这会使大多数程序员感到意外。  IOW 它违反了最少意外的原则。

要使 DriverLib 中的断言默认情况下处于禁用状态、IMO DriverLib 应使用其自身的机制、而不是使用 NDEBUG 符号。

msp430ware_3_80_04_05

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Lloyd、
    那么、您对此主题有什么疑问吗?

    此致、
    现金 Hao
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不,我没有疑问。  只是建议或投诉。   C assert 机制引用了符号 NDEBUG、按照惯例、只有终端用户或编程人员才应定义它。  库不应定义它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想说,如果你只想说你会把我的建议转交给 DriverLIb 小组,这是解决了的。  他们是否接受我的建议是我无法控制的。  但是、如果没有积极的反馈表明我的建议不会被置若罔闻、我就会停止与 TI 的互动。  或者告诉我一个更具建设性的地方来提出建议。