Ale*_*kiy 3 c global-variables firmware
所以我正在为固件制作一个"快速而又脏"的探测器 - 我只需知道一些功能需要多长时间.仅仅打印每次所需的时间会使结果产生偏差,因为日志记录很昂贵 - 所以我将一堆结果保存到一个数组并在一段时间之后将其转储.
在一个编译单元(一个源文件)中工作时,我只有一堆存储结果的静态数组.现在我需要在几个文件中执行此操作.我可以"复制粘贴"代码,但这只是丑陋(跟我一起).如果我将时序代码放在一个单独的编译单元中,创建静态变量,并在头文件中提供访问器函数,那么每次我想访问这些静态变量时,都会产生函数调用的开销.
是否可以直接访问编译单元的静态变量?
我一直试图封装数据,而不是使用全局变量,但这种情况只是由于速度问题而需要它.
我希望这是有道理的!谢谢!
编辑:好吧,所以看起来我问的是不可能的 - 你们中的任何人看到的替代方案基本上允许我直接访问另一个编译单元的数据吗?
EDIT2:谢谢Pablo和Jonathan的答案.我最终接受了Pablo的,因为在我的情况下,我没有明确的位置来获取指向静态数据的指针(根据Jonathan).再次感谢!
不,不可能static从另一个变量访问编译单元的变量.static关键字可以准确防止这种情况发生.
如果需要从另一个编译单元访问全局变量,则可以执行以下操作:
file1.c中:
int var_from_file1 = 10;
Run Code Online (Sandbox Code Playgroud)
file2.c中:
extern int var_from_file1;
// you can access var_from_file1 here
Run Code Online (Sandbox Code Playgroud)
如果您可以static从声明中删除关键字,那么您应该没问题.我知道更改现有源代码并不总是一种选择(IE处理现有的遗留编译代码).