gpt4 book ai didi

c - gcc:如何避免对程序集中定义的函数发出 "used but never defined"警告

转载 作者:太空狗 更新时间:2023-10-29 15:17:52 24 4
gpt4 key购买 nike

出于某些原因,我正在尝试使用 GCC 中的顶级程序集来定义一些静态函数。然而,由于 GCC 没有“看到”这些函数的主体,它警告我它们“已使用但从未定义”。一个简单的源代码示例可能如下所示:

/* I'm going to patch the jump offset manually. */
asm(".pushsection .slen,\"awx\",@progbits;"
".type test1, @function;"
"test1: jmp 0;"
".popsection;");
/* Give GCC a C prototype: */
static void test(void);

int main(int argc, char **argv)
{
/* ... */
test();
/* ... */
}

然后,

$ gcc -c -o test.o test.c
test.c:74:13: warning: ‘test’ used but never defined [enabled by default]
static void test(void);
^

如何避免这种情况?

最佳答案

gcc 在这里很聪明,因为您已将函数标记为静态,这意味着它应该在这个翻译单元中定义。

我要做的第一件事是去掉 static 说明符。这将允许(但不要求)您在不同的翻译单元中定义它,这样 gcc 就不会在编译时报错。

可能会引入其他问题,我们必须拭目以待。

关于c - gcc:如何避免对程序集中定义的函数发出 "used but never defined"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com