[問題] 前置處理器的問題

看板C_and_CPP作者 (拒看低質媒體)時間12年前 (2011/09/12 18:32), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
開發平台(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
我自己發現#error這個指令後利用它找到原因了
09/13 20:40, 1F
文章代碼(AID): #1ERT-cgf (C_and_CPP)