Re: [問題] 關於macro在程式碼中的位置
pre-process和compile的過程是分開的
在下面的程式裡
pre-processor處理到#ifdef DO_IT這一行的時候DO_IT還沒#define
所以中間的code就被pre-processor刪掉了
pre-processor全部處理完以後才丟給compiler
所以說macro放在前後當然有差啊
※ 引述《cloudfly (王妃)》之銘言:
: 遇到的問題: (題意請描述清楚)
: 遇到了一個巨集的考題,不曉得怎麼解釋跑出的結果
: 希望得到的正確結果:
: 在main()中執行test1和tes2兩個function,求印出sum的值為多少?
: 程式跑出來的錯誤結果:
: 若依照這樣的程式(巨集放在PrintSum後)執行結果就是印出0,0
: 但如果把#define DO_IT放到PrintSum之前,執行結果就是3,7
: 請問macro前置處理器放在前後會有這種差別呢?
: 這種結果要怎麼解釋。
: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
: Dev-C++
: 有問題的code: (請善用置底文標色功能)
: #include <stdio.h>
: #include <stdlib.h>
: void PrintSum(int x, int y)
: {
: int sum =0;
: #ifdef DO_IT
: sum=x+y;
: #endif
: printf("%d\n",sum);
: }
: #define DO_IT
: void test1()
: {
: PrintSum(1,2);
: }
: void test2()
: {
: PrintSum(3,4);
: }
: int main(void) {
: test1();
: test2();
: system("pause");
: return 0;
: }
: 補充說明:
--
好面熟的題目 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.32.62
→
09/11 17:02, , 1F
09/11 17:02, 1F
→
09/12 00:10, , 2F
09/12 00:10, 2F
→
09/12 11:06, , 3F
09/12 11:06, 3F
推
09/16 09:18, , 4F
09/16 09:18, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):