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.

[参考译文] MSP430FR2355:如何让库识别应用程序中存在的#define?

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/957253/msp430fr2355-how-to-have-a-library-recognize-a-define-that-exists-in-an-application

器件型号:MSP430FR2355

我有一个可执行的应用程序项目,用户可以在头文件中访问一些#define…… 然后、我有一个单独的库工程、它将首先编译、然后包含在内、以便用户可以使用它。  但是,该库取决于应用程序中的#defines。。。 如何操作?  我在这里假设 extern 仅适用于变量和函数、而不是常量。  我确实有一个头文件,用户将包含该头文件,以便能够使用该库,但我希望保留它,以便仅供查看,并且不让用户“不”在其中...

谢谢

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

    如前所述、您需要 公共和私有头文件。 该库将包括两个头文件、用户仅包括一个公共头文件。 #define 用户应引用属于公共标头。

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

    不确定“私有”在这里意味着什么……用户将拥有两个头文件,并且能够查看两个头文件,我希望最好的是,用户被警告不要更改私有头文件中的任何内容,因为编译的库将停止工作……是这样的 您建议的内容有多大???

    我仍然不确定如何继续。  define 是 TBxCCRx 寄存器加载。  我希望这是公开的,而不是私人的。  当然、我可以将其放入库头文件中、但如果我告诉用户"清除"、则他们将失去对参数的控制、我希望他们能够访问该参数。  如果我将#define 放在公共标头中,那么问题仍然是如何将该信息返回到已编译的库中,以便它可以加载寄存器......

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

    私有标头将只是用户从未看到的预编译源代码的一部分。 公共库具有用户使用库所需的一组定义和原型。 编译后对公共头文件的任何更改都不会对库产生任何影响。

    include 文件只是文件执行的代码。 问问自己"如果我在头文件中更改此内容、它是否会对我的预编译库产生任何影响?

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

    明白了...谢谢 Keith!