[問題] 請問marco的 #號

看板C_and_CPP (C/C++)作者 (我還存在耶)時間9年前 (2016/11/25 17:52), 9年前編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
請教一下 定義宣告如下 #define EXPECT_TRUE(condition) \ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ GTEST_NONFATAL_FAILURE_) #define GTEST_NONFATAL_FAILURE_(message) \ GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) #define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (const ::testing::AssertionResult gtest_ar_ = \ ::testing::AssertionResult(expression)) \ ; \ else \ fail(::testing::internal::GetBoolAssertionFailureMessage(\ gtest_ar_, text, #actual, #expected).c_str()) ============================================================== 使用上的範例如下 EXPECT_TRUE(1) or EXPECT_TRUE(0) 判斷成功或是失敗 或 EXPECT_TRUE(system("echo 1 > /sys/class/gpio/gpio1021/value") == 0); 或 EXPECT_TRUE(!memcmp(buf, ref, sizeof(buf))); 我想問的是,上面的define的#,false,true,GTEST_NONFATAL_FAILURE_ 這三個參數是要做什麼??? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.113.51 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480067544.A.F51.html ※ 編輯: liptonbin (61.230.113.51), 11/25/2016 17:57:23

11/25 17:58, , 1F
#define F(x) #x, F(ABC)編譯變成"ABC"
11/25 17:58, 1F

11/25 18:00, , 2F
後三個參數名字都跟你說了: actual 是實際值
11/25 18:00, 2F

11/25 18:00, , 3F
expected 是期待要有的值, fail 是失敗時寫錯誤訊息的函數
11/25 18:00, 3F

11/25 18:01, , 4F
actual 跟 expected 都是用來建構錯誤訊息的
11/25 18:01, 4F

11/25 18:01, , 5F
(可以看到在 fail(...) 裡面它們前面也有 # 字)
11/25 18:01, 5F

11/25 18:02, , 6F
也就是這裡寫什麼錯誤訊息裡就會照樣出現什麼
11/25 18:02, 6F

11/25 18:03, , 7F
#condition 類似用途, 只不過這裡它會印出你的判斷式
11/25 18:03, 7F
文章代碼(AID): #1OE0dOzH (C_and_CPP)
文章代碼(AID): #1OE0dOzH (C_and_CPP)