开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
OS : Ubuntu 14.04 LTS
toolchain : arm-none-eabi
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
porting 他人程式, compile 后出现 warning, 想将它移除.
compile msg 片段: http://pastie.org/10256821
该程式里有很多 "inline function + 里面含 static variable" 的写法
举例: a.c & b.c & c.c 里皆有使用到 my_func()
inline void my_func(void)
{
static int s_var = 1;
do_something(); // 会使 s_var 值发生改变
}
> arm-none-eabi-gcc main.c a.c b.c c.c
Q1: warning msg 有 "[enabled by default]" 字样.
意思是不是 arm-none-eabi-gcc 会自动将 my_func() 改成这样:
=> static inline void my_func(void) ??
Q2: 承上, 这代表 build 出来的 a.c & b.c & c.c 里, 都有各自一份
s_var 吗??
Q3: 如果我希望 a.c & b.c & c.c (或是说, 最终的执行档 a.out)
只 share 同一份 s_var 的话, 请问要怎么改?
a). 将 s_var 宣告在 my_func() 外??
b). 将 inline 拿掉 ?
c). 还是, 根本就做不到 ??
喂入的资料(Input):
无
预期的正确结果(Expected Output):
无
错误结果(Wrong Output):
无
程式码(Code):(请善用置底文网页, 记得排版)
无
补充说明(Supplement):