![]() |
1
1
无法利用静态变量初始化
试图利用静态变量初始化将不起作用。C只允许
程序启动(或库加载)时函数的一次性调用
不清楚为什么要一次性调用,但是如果在程序启动时可以这样做,那么就有一个特定于gcc的解决方案。
您可以分配
此建议不执行您的特定任务: < Buff行情>我对编译时保证func()只从调用函数作用域调用一次感兴趣… < /块引用>相反,它确保函数在程序启动时(或者当它所属的库被加载时)被精确地调用一次。 使用静态变量作为保护如果需要以初始化函数局部静态变量的准确方式来控制何时调用函数,则可以使用静态变量来跟踪单次函数是否已使用自己的静态变量调用。其他答案已经描述了如何完成这一点,但为了完整性:
使用函数指针!实现目标的另一种方法是通过函数指针调用函数。对函数的初始调用将完成真正的工作,然后将函数指针切换为指向一个什么都不做的函数。
|
![]() |
2
2
可以将函数包装在另一个函数中,该函数检查静态变量并调用
现在,只向其他模块公开
|
![]() |
3
1
你可以用
第一次通过呼叫码,
|
![]() |
SKG · 如何等待静态字符串获取特定值 7 年前 |
![]() |
katiex7 · 为什么在声明静态变量之前可以初始化它 7 年前 |
![]() |
Matthieu Raynaud de Fitte · 晶体静态变量 7 年前 |
|
Don M · 复制静态变量(文件范围)行为 9 年前 |
|
user3303680 · 静态/类变量和GUI[重复] 9 年前 |
![]() |
arya · 忽略对静态变量的赋值 9 年前 |