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:在以下示例中、对于 k legal、以下使用 extern 的方法是否合法?

Guru**** 2538960 points
Other Parts Discussed in Thread: MSP430FR2355

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/955422/msp430fr2355-is-the-following-use-of-extern-with-respect-to-k-legal-in-the-following-example

器件型号:MSP430FR2355

假设我将库正确链接到可执行工程、我是否可以在库中定义 k、然后在可执行文件中使用、如下所示?  这是否合法?

项目 A (库):libtest.libc

Liba.c.

#include "lib.h"

int k = 0; 

libb.c

#include "lib.h"

m = k+1; 

lib.h

extern int k; 

项目 B (可执行):main.c

#include "lib.h"


r = k*2 

谢谢

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

    是的、这就是实现它的方法。

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

    器件型号:MSP430FR2355

    一个更棘手的问题和静态的使用...这是假设性的,我想理解。 如果我有一个包含多个 c 源文件的 lib.libc 项目、然后我放置  

    静态 int k = 0; 

    在其中一个 c 源文件的全局范围级别、因为我希望不仅在源文件内的函数中、而且在项目内的源文件中保留值 k。  库中的第二个源文件将如何看到这一点?  我是否以某种方式同时使用静态和外部变量、或者应该将定义放置在工程的头文件中?

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

    遗憾的是,静态的含义取决于上下文。

    在函数范围之外的全局定义中很少需要该函数。

    在函数定义中、声明在调用之间应保留其值真的很重要。 这是全局变量自动发生的情况。

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

    但是、如果您在文件中有多个函数并在这些函数之外使用静态函数、则它们都可以访问该函数、并且文件外部没有人可以看到该函数、对吧?

    如果是这样、我的问题就会变成、如果您在库项目中有多个 c 源文件和一个标头、 创建"私有"变量的最佳机制是什么、这样所有库源文件都可以看到并使用它们、但一旦将库头文件包含到该可执行工程中、应用程序代码工程将不会看到这些变量(或无法访问它们)?

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

    您好、Steve、

    我在这里阅读、想知道您的问题是否得到了解答?

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

    你好 Dennis。。。

    是的,我相信这里的一切都很好

    谢谢

    Steve