You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言#pragma指令问题:VS2019下#pragma startup未生效求解

你遇到的问题是#pragma startup这一MSVC非标准编译指令的使用不符合要求导致的,具体问题和修复方法如下:

  • 首先,#pragma startup是微软MSVC编译器独有的非标准扩展,完整语法要求指定执行优先级,格式为#pragma startup 函数名 优先级数值
    • 优先级数值范围为0255:099预留给C运行时库初始化使用,100199区间的优先级会让函数在`main`函数执行前运行,200255区间的优先级会让函数在main函数执行结束后运行
    • 你没有指定优先级时,编译器默认会采用最高的优先级数值255,也就是f1会在main执行结束后才运行,而main返回0后程序直接退出,自然看不到f1的输出
  • 修复方法:给#pragma startup补充100~199之间的优先级即可,修改对应代码行:
#pragma startup f1 150

修改后重新编译运行,就能看到预期的输出顺序。

另外补充两个注意点:

  • #pragma startup指定的函数必须是无参数、无返回值的全局函数,不能用static修饰,否则指令不生效
  • 该指令仅适用于MSVC编译器,不属于C语言标准语法,跨编译器场景不建议使用

内容的提问来源于stack exchange,提问作者Alok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:24:04