在 C++ 中,我可以在头文件中内联声明一个 getter 函数:
class Cpp_Example
{
public:
unsigned int get_value(void)
{ return value;}
private:
unsigned int value;
};
通过包含此头文件,客户端方法和函数可以使用 getter 函数访问私有变量。
我正在寻找用 C 语言对这个概念进行建模:
hello.h:
#ifndef HELLO_H
#define HELLO_H
#include <stdio.h>
inline void Print_Hello(void)
{
extern const char hello_text[32];
puts(hello_text);
}
inline void Print_Value(void)
{
extern unsigned int value;
printf("Value is: %d\n", value);
}
#endif // HELLO_H
你好ç:
const char hello_text[32] = "Hello World!\n";
static unsigned int value = 5U;
主.c:
#include <stdio.h>
#include <stdlib.h>
#include "hello.h"
int main(void)
{
Print_Hello();
Print_Value();
// puts(hello_text);
return EXIT_SUCCESS;
}
我从 gcc 收到链接器错误:
$ gcc -o main.exe main.c hello.c
/tmp/cc41ZB8H.o:main.c:(.rdata$.refptr.value[.refptr.value]+0x0): undefined reference to `value'
collect2: error: ld returned 1 exit status
有没有办法让内联函数(在头文件中)访问另一个翻译单元中的静态变量?
或者有没有办法实现内联的getter函数?
我在嵌入式平台上使用 IAR Embedded Workbench、ARM7TDMI 处理器。
gcc 编译器用于在 PC 上测试概念。
编辑 1:背景
我正在寻找优化关键部分内的 getter 调用。目的是减少在关键部分花费的时间。
编辑 2:没有全局
变量 我们商店使用的编码指南声明没有全局变量。
此外,该系统是运行 MicroCOSII 的 RTOS。