Article ID: 167355 - Last Review: October 3, 2005 - Revision: 3.0
BUG: You still receive a "warning C4768" message even if you use the warning pragma to disable the warning in Visual C++ This article was previously published under Q167355
Warnings similar to the following are generated even if you
use the warning pragma to disable the warning:
warning
C4786:
'std::rb_tree<CAiSpanningTree<State,std::less<State>>::TransClosureNode,
CAiSpanningTree<State,std::less<State>>::TransClosureNode,std::ident<Cai
SpanningTree<State,std::less<State>>::TransClosureNode,CAiSpanningTree<S
tate,std::less<State>>::TransClosureNode>,std::less<CAiSpanningTree<Stat
e,std::less<State>>::TransClosureNode>>' : identifier was
truncated to '255' characters in the debug information
The code:
#pragma warning(disable:4786)
disables warnings that list the file and line number. For example:
C:\test\Text.cpp(25) : warning C4786:
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.
This problem was corrected in Microsoft Visual C++
.NET.
This warning can be ignored. However, the identifier may
not be accessible or viewable in the debugger.
Sample code
/*
Compiler Options: /Zi
*/
#include <stddef.h>
#include <new.h>
#pragma warning(disable:4786)
namespace std {
template <class T, class U> struct ident {};
template <class T1, class T2> struct pair {};
template <class Arg1, class Arg2, class Result>
struct binary_function {};
template <class T>struct less : binary_function<T, T, bool> {};
template <class T, class Distance> struct bidirectional_iterator {};
template <class Key, class Value, class KeyOfValue, class Compare>
class rb_tree {
public:
typedef int size_type;
typedef int difference_type;
typedef void* link_type;
struct rb_tree_node {};
typedef Key key_type;
class iterator : public bidirectional_iterator<Value,
difference_type> {};
class const_iterator : public
bidirectional_iterator<Value,difference_type> {
protected:
link_type node;
const_iterator(link_type x) : node(x) {}
};
public:
size_type count(const key_type& x) const;
};
template <class Key, class Value, class KeyOfValue,
class Compare>
rb_tree<Key, Value, KeyOfValue, Compare>::size_type
rb_tree<Key, Value, KeyOfValue, Compare>::
count(const Key& k) const {
size_type n = 0;
return n;
};
template <class Key, class Compare> class set {
typedef ::std::rb_tree<Key, Key,ident<Key, Key>, Compare>
rep_type;
rep_type t;
};
}
template <class Node, class Compare>class CAiTransitiveClosure{
public:
typedef std::set<Node, Compare > NodeSet; NodeSet m_todo;
};
template <class Node, class Compare> class CAiSpanningTree {
public:
typedef std::set<Node, Compare > NodeSet;
protected:
typedef Node CAiSpanningTreeNode;
typedef NodeSet CAiSpanningTreeNodeSet;
private:
struct TransClosureNode {};
struct TransClosureGraph
: public CAiTransitiveClosure<TransClosureNode,
std::less<TransClosureNode> >
{};
public:
CAiSpanningTree(const Node& initialNode);
CAiSpanningTree(const NodeSet& initialNodes);
};
struct State { };
class CformSpanningTree:public CAiSpanningTree<State,std::less<State>>
{
public:
CFormSpanningTree( NodeSet initial)
: CAiSpanningTree<State, std::less<State> >(initial)
{}
};
APPLIES TO Microsoft Visual C++ 5.0 Enterprise Edition Microsoft Visual C++ 6.0 Enterprise Edition Microsoft Visual C++ 5.0 Professional Edition Microsoft Visual C++ 6.0 Professional Edition Microsoft Visual C++, 32-bit Learning Edition 6.0 kbbug kbfix kbnoupdate kbcode kbcompiler KB167355