给定以下代码:
1. #include <iostream>
2. #define CALL_FUNC(f) f();
3.
4. int main()
5. {
6. CALL_FUNC([](){
7. std::cout << "I'm on line " << __LINE__ << std::endl;
8. });
9. return 0;
10. }
当我在 Visual Studio 2012 和 g++ 4.7.3 中编译它时,我得到输出“我在第 8 行”。
当我用 clang 编译它时,我得到了“我在第 7 行”的输出,这是我所期望的。
有谁知道其中哪一个是正确的行为?有没有办法在 VS 和 g++ 中获得所需的行为,同时仍然有一个 CALL_FUNC 宏?