C语言 错误:字符串常量前需要标识符或“(”

6l7fqoea  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(141)

我试图用gcc编译https://www.cs.uaf.edu/courses/cs301/2014-fall/notes/inline-assembly/底部的代码,得到了一个错误。
首先,代码如下:

extern "C" long my_fn(long in); /* Prototype */

__asm__( /* Assembly function body */
"my_fn:\n"
"  mov %rdi,%rax\n"
"  add $100,%rax\n"
"  ret\n"
);

int foo(void) {
   return my_fn(3);
}

字符串
下面是错误:

test.c:1:8: error: expected identifier or ‘(’ before string constant
    1 | extern "C" long my_fn(long in); /* Prototype */
      |        ^~~
test.c: In function ‘foo’:
test.c:11:11: warning: implicit declaration of function ‘my_fn’ [-Wimplicit-function-declaration]
   11 |    return my_fn(3);
      |           ^~~~~


有什么想法吗

xpszyzbs

xpszyzbs1#

它看起来像你试图使用C编译器编译C代码。
要么用g
(gcc的C++版本)编译,要么通过从有问题的行中删除有问题的extern "C"将代码重写为有效的C。

long my_fn(long in); /* Prototype */

字符串

相关问题