单项选择题

以下是两个源程序文件:
/* m1.c */                                                        /* m2.c */
         int x=100;                                                        float x;
         int p1(viod);                                                    static main=1;
int main()                                                        int p1()
        {                                                                      {
                x= p1();                                                           int p1=main + (int) x;
                return x;                                                          return p1;
}                                                                      }
对于上述两个源程序文件链接时的符号解析,错误的是(   )。

A.虽然x、main和p1都出现了多次定义,但不会发生链接错误
B.m1中对x的两处引用都与m1中对x的定义绑定
C.m2中的变量p1与函数p1被分配在不同存储区
D.m2中对x的引用与m2中对x的定义绑定