【发布时间】:2012-06-18 19:49:58
【问题描述】:
我制作了 2 个项目,第一个用 C 语言,第二个用 C++ 语言,两者都具有相同的行为。
C 项目:
header.h
int varGlobal=7;
main.c
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
void function(int i)
{
static int a=0;
a++;
int t=i;
i=varGlobal;
varGlobal=t;
printf("Call #%d:\ni=%d\nvarGlobal=%d\n\n",a,i,varGlobal,t);
}
int main() {
function(4);
function(6);
function(12);
return 0;
}
C++ 项目:
header.h
int varGlobal=7;
main.cpp
#include <iostream>
#include "header.h"
using namespace std;
void function(int i)
{
static int a=0;
int t=i;
a++;
i=varGlobal;
varGlobal=t;
cout<<"Call #"<<a<<":"<<endl<<"i="<<i<<endl<<"varGlobal="<<varGlobal<<endl<<endl;
}
int main() {
function(4);
function(6);
function(12);
return 0;
}
我读到全局变量在默认情况下是 extern 在 C 中,在 C++ 中默认是 static;那么为什么 C++ 代码可以工作呢?
我的意思是 int varGlobal=7; 与 static int varGlobal=7; 相同,如果它是静态的,那么它只能在声明的文件中使用,对吧?
【问题讨论】:
-
首先请注意
include只是复制粘贴内容。因此对于这样的单个文件示例,应该将其删除以简化。
标签: c++ c static global-variables extern