Re: [问题] #define过的东西

楼主: jacky1989   2014-11-22 22:48:48
提供你一个方法
也请其他高手不吝指教
以下为程式码
//main.cpp
void file_1();
void file_2();
int N;
int main(){
printf("Enter N:");
scanf("%d",&N); //enter 100
file_1();
file_2();
system("pause");
return 0;
}
//file 1.cpp
extern int N;
void file_1(){
int s;
s=N*2;
printf("s = %d\n",s); //s = 200;
}
//file 2.cpp
extern int N;
void file_2(){
int a;
a=N++;
printf("a = %d\n",a); // a = 101;
}
记得要先把N宣告为全域变量
然后只要不同的file直接用extern就好
如果所有的function都在同一个档案内
那就是全域变量就可以了
然后每个file或是function内就不能再有N,不然会出问题
这写法有一个危险就是N有可能会不小心被更动
因为无法被宣告为const int N
如果有方法可以解决这问题,再请高手指教
※ 引述《claude51315 (淼)》之铭言:
: 小弟目前遇到一个问题
: 为了刚开始方便这样写
: #define N 100
: 之后写了许多function都直接拿 N 来用
: 如果之后要让使用者自己输入新的 N 执行
: 请问要怎么处理那些在函式中的 N 呢?? @@
: 只能在宣告函式时多喂一个参数进去嘛?
: 麻烦板上的大大了!
作者: scwg ( )   2014-11-23 09:56:00
在其他档案里写 extern const int N; 不改 main.cpp?
作者: uranusjr (←這人是超級笨蛋)   2014-11-23 14:11:00
scanf 不能接受 const int * 所以不行不改 main.cpp 的话就是 type mismatch 了

Links booklink

Contact Us: admin [ a t ] ucptt.com