[問題] 前置處理器的問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
boost
php source
問題(Question):
preprocessor 在 #ifdef 以及 #ifndef上的判斷與預期不同
餵入的資料(Input):
無
預期的正確結果(Expected Output):
在#include "php.h"時
會編譯
#ifdef PHP_WIN32 或 #ifdef ZEND_WIN32
所包含的程式碼
錯誤結果(Wrong Output):
如果我在compiler選項預先定義前置處理器
則
#include "php.h"
會得到正確的結果 (#ifdef ZEND_WIN32 內的程式碼會被編譯)
但是若新增一行
#include "boost/archive/text_oarchive.hpp"
#include "php.h"
則在php.h中, 前置處理器反而會編譯#ifndef ZEND_WIN32 內的程式碼
即使我改成
#include "boost/archive/text_oarchive.hpp"
#undef PHP_WIN32
#undef ZEND_WIN32
...
#define PHP_WIN32
#define ZEND_WIN32
...
#include "php.h"
問題依舊
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.5.232
※ 編輯: Wush978 來自: 220.137.5.232 (09/12 18:32)
※ 編輯: Wush978 來自: 220.137.5.232 (09/12 18:32)
→
09/13 20:40, , 1F
09/13 20:40, 1F