-2

当涉及全局变量时,我对在我的 c 代码中使用“extern”感到有些困惑。我尝试了以下方法,并得到了编译错误:

主要.c:

extern unsigned short *videobuffer;
//I also tried this in a separate and it failed with the same compilation error//
extern (unsigned short *)videobuffer;

lib.c:

unsigned short *videobuffer = (unsigned short *)0x6000000;

我收到的错误:

[COMPILE] Compiling main.c
main.c:16: error: expected identifier or '(' before 'unsigned'
make: *** [main.o] Error 1
4

2 回答 2

0

以下是正确的:

主要.c:

extern unsigned short *videobuffer;

lib.c:

unsigned short *videobuffer = (unsigned short *)0x6000000;

关键字告诉编译器extern有一个变量,但它不在这个编译单元中。

于 2015-10-24T22:15:52.237 回答
0

有效代码通常是人们想要的:

主程序

#include <stdio.h>
extern unsigned short *videobuffer;

int main() {
    printf("%p\n", videobuffer);
}

库文件

unsigned short *videobuffer = (unsigned short *)0x6000000;
于 2015-10-24T22:08:38.423 回答