日期:2014-05-16  浏览次数:20736 次

GCC用__attribute__((weak))编译报错,帮我看看吧!
源代码:

#include<stdio.h>
int __fun(){return 100;}
void fun() __attribute__ ((weak,alias("__fun")));

void f(int i){
printf("Number = %d\n",i);
}
static void g(int i){
printf("n=%d\n",i);
}

# g++ -c my.cpp
lib.cpp:3: 错误:‘void fun()’是未定义符号‘__fun’的别名

这个错误到底是什么意思呢?

------解决方案--------------------
引用:
源代码:

#include<stdio.h>
int __fun(){return 100;}
void fun() __attribute__ ((weak,alias("__fun")));

void f(int i){
printf("Number = %d\n",i);
}
static void g(int i){
printf("n=%d\n",i);
}

# g++ -c my.cpp
lib.cpp:3: 错误:‘void fun()’是未定义符号‘__fun’的别名

这个错误到底是什么意思呢?

在我的编译器上面编译没问题,每个编译器会把你的函数名修饰一下,就是换成编译器自己的函数名称,每个编译器的修饰方法不同,所以建议你换个编译器试试