相关疑难解决方法(0)

Visual Studio是否在打印功能地址时出错?

使用以下测试用例:

#include <iostream>

void foo()
{}

int main()
{
   std::cout << &foo << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

GCC 4.1.2,GCC 4.8和GCC 4.9(C++ 03和C++ 11)在构建和编译时都给出以下输出:

$ g++ main.cpp -o test && ./test
main.cpp: In function 'int main()':
main.cpp:8:23: warning: the address of 'void foo()' will always evaluate as 'true' [-Waddress]
   std::cout << &foo << std::endl;
                 ^
1
Run Code Online (Sandbox Code Playgroud)

这应该是因为函数指针唯一可行的流插入是转换为bool(并且void*需要强制转换才能实际获取流中的地址).

但是,Microsoft Visual Studio 2012和2013会输出指针地址.

哪一套工具链符合要求?是否记录了不合格?

c++ gcc visual-studio language-lawyer

2
推荐指数
2
解决办法
221
查看次数

标签 统计

c++ ×1

gcc ×1

language-lawyer ×1

visual-studio ×1