标签:bsp ... dex 范围 roc linking 嘻嘻 ora 编译器
(1)在C语言的头文件中定义变量出现的问题
最好不要傻嘻嘻的在头文件里定义什么东西。比如全局变量:
  /*xx头文件*/
  #ifndef 
  _XX_头文件.H
  #define 
  _XX_头文件.H
  int A;
  #endif
那么,很糟糕的是,这里的int A
是个全局变量的定义,所以如果这个头文件被多次引用的话,你的A会被重复定义,显然语法上错了。只不过有了这个#ifndef的条件编译,所以能保证你的头文件只被引用一次,不过也许还是不会出岔子,但若多个c文件包含这个头文件时还是会出错的,因为宏名有效范围仅限于本c源文件,所以在这多个c文件编译时是不会出错的,但在链接时就会报错,说你多处定义了同一个变量
错误警告:Linking...
incl2.obj : error LNK2005: "int glb" (?glb@@3HA) 
already defined in incl1.obj
Debug/incl.exe : fatal error LNK1169: one 
or more multiply defined symbols found
正确的作法是在c源文件中定义一个全局变量。在头文件中加入全局变量的声明
//var.c 一个主要用于定义全局变量的c源文件
int g_a;char g_x;//var.h 用于声明定义的全局变量extern int  g_a;//使用extern在头文件中声明全局变量extern char g_x; //test.c 一个用于测试的头文件#include <var.h>void f(){    g_a = 1;    g_x = ‘x‘;}标签:bsp ... dex 范围 roc linking 嘻嘻 ora 编译器
原文地址:http://www.cnblogs.com/hai5111/p/6227365.html