{"id":26,"date":"2007-04-06T03:35:45","date_gmt":"2007-04-06T08:35:45","guid":{"rendered":"http:\/\/mariusbancila.ro\/blog\/?p=26"},"modified":"2011-07-15T22:40:29","modified_gmt":"2011-07-15T20:40:29","slug":"tweaking-autoexpdat-for-custom-types-in-vs2005","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/","title":{"rendered":"Customize autoexp.dat for own types in VS2005"},"content":{"rendered":"<p>Suppose you have a class foo like this:<\/p>\n<pre name=\"code\" class=\"cpp\">\r\nclass foo \r\n{\r\npublic:\r\n\tint X;\r\n\tint Y;\r\n\tint Z;\r\n\r\n\tfoo(int x = 0, int y = 0, int z = 0): X(x), Y(y), Z(z) {}\r\n};\r\n<\/pre>\n<p><\/p>\n<p>And you have a variable f(1, 2, 3) what you watch in your Watch window. The window looks like this:<\/p>\n<p><img decoding=\"async\" title=\"Default expansion for foo\" alt=\"Default expansion for foo\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2007\/04\/autoexp1.png\" align=\"middle\" \/><\/p>\n<p>The field Value shows a default expansion of the object, {X=1 Y=2 Z=3}. However, this can be changed by modifying a file called autpexp.dat, located in the Visual Studio installation folder, under Common7\\Packages\\Debugger. This file allows the control of several things in the debugger, such as the string displayed in the Value column, the functions the debugger skips when stepping, etc. One important limitation however, is that it does not support complex expression, for which it simply displays &#8220;???&#8221;. This file is loaded each time you start the debugger.<\/p>\n<p>The Autoexp.dat file consists in a set of rules, called AutoExpand rules, specified on a single line and having the format:<\/p>\n<pre class=\"prettyprint\">\r\ntype=[text]&lt;member[,format]>...\r\n<\/pre>\n<p>\nwhere<\/p>\n<pre class=\"prettyprint\">\r\ntype      Name of the type (may be followed by <*> for template\r\n          types such as the ATL types listed below).\r\ntext      Any text.Usually the name of the member to display, \r\n          or a shorthand name for the member.\r\nmember    Name of a member to display.\r\nformat    Watch format specifier. One of the following:\r\n\r\nLetter  Description                 Sample         Display\r\n------  --------------------------  ------------   -------------\r\nd,i     Signed decimal integer      0xF000F065,d   -268373915\r\nu       Unsigned decimal integer    0x0065,u       101\r\no       Unsigned octal integer      0xF065,o       0170145\r\nx,X     Hexadecimal integer         61541,X        0X0000F065\r\nl,h     long or short prefix for    00406042,hx    0x0c22\r\n          d, i, u, o, x, X\r\nf       Signed floating-point       3.\/2.,f        1.500000\r\ne       Signed scientific-notation  3.\/2.,e        1.500000e+000\r\ng       Shorter of e and f          3.\/2.,g        1.5\r\nc       Single character            0x0065,c       'e'\r\ns       Zero-terminated string      pVar,s         \"Hello world\"\r\nsu      Unicode string              pVar,su        \"Hello world\"\r\n<\/pre>\n<p><\/p>\n<p>The AutoExpand rules must be located under the [AutoExpand] section, because the file also contains rules for visualizing types when the object is expanded. These visualization rules are located under [Visualizer] and are a feature new in VS2005.<\/p>\n<p>Going back to our foo class, suppose you use this class heavily and you don&#8217;t like the default string shown in the Value column, and you would like it to be like this: {X=0x00000001, Y=0x00000002, Z=0x00000008}. That means using comma to separate the fields and display the values as hexadecimal numbers. What you would have to do is adding a AutoExpand rule like this:<\/p>\n<pre class=\"prettyprint\">\r\nfoo =X=&lt; X, X >, Y=&lt; Y, X >, Z=&lt; Z, X >\r\n<\/pre>\n<p><\/p>\n<p>It says something like this: display X followed by = and the value of member X of foo in hexadicimal, followed by comma, space, Y and = followed by the value of member Y of foo in hexadecimal, and so on. Debugging now, will show a different string:<\/p>\n<p><img decoding=\"async\" title=\"Custom auto expand string for foo\" alt=\"Custom auto expand string for foo\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2007\/04\/autoexp2.png\" align=\"middle\" \/><\/p>\n<p>But now let&#8217;s imagine that our foo class was actually a template class, like this:<\/p>\n<pre class=\"prettyprint\">\r\ntemplate &lt; typename T >\r\nclass foo \r\n{\r\npublic:\r\n\tT X;\r\n\tT Y;\r\n\tT Z;\r\n\r\n\tfoo(T x, T y, T z): X(x), Y(y), Z(z) {}\r\n};\r\n<\/pre>\n<p><\/p>\n<p>The rule above would not help for an object foo f(1, 2, 3) and the default format would be used. That is so because template types have a different form: we need to use <*>.<\/p>\n<pre class=\"prettyprint\">\r\nfoo&lt; * > =X=&lt; X, X >, Y=&lt; Y, X >, Z=&lt; Z, X >\r\n<\/pre>\n<p><\/p>\n<p>With this rule the string is the same as in the above image (the type though changes to foo).<\/p>\n<p>What is this good for? Well, I have shown you a simple example here, but suppose you have complex types, with a lot of members, and the default string shown by the debugger doesn&#8217;t help you. To see the info you actually need in the watch window or when you put the mouse over the variable you would have to expand the object and scroll down, perhaps expand aggregated objects, etc. to reach what you actually need on a regular basis. Creating a custom rule for the auto displayed value allows you to show exactly the information you need, in the form you want. For instance you may always want to see the numeric values of X,Y and Z from foo as hexadecimal, but you switched for decimal view in the debugger (from the context menu of the Watch window). That won&#8217;t affect the way you view your type, because of the custom rule.<\/p>\n<p>A second part of autoexp.dat file is dedicated to visualization rules. These are mappings from types to display form, shown when you expand the object. Unlike the simple AutoExpand rules, these are more complex and have a dedicated scripting language, which unfortunatelly is not documented.<\/p>\n<p>The basic form of a rule is:<\/p>\n<pre class=\"prettyprint\">\r\ntypename[|typename...] {\r\n    preview (\r\n        preview-string-expression\r\n    )\r\n    stringview (\r\n        text-visualizer-expression\r\n    )\r\n    children (\r\n        expanded-contents-expression\r\n    )\r\n}\r\n<\/pre>\n<p><\/p>\n<p>The three sections have the following purpose:<\/p>\n<ul>\n<li>preview: an expression (string literal or expression) to be shown in the Watch, QuickWatch or Command window; if the preview section is present and you also have a AutoExpand rulu for it, the AutoExpand rule is ignored;<\/li>\n<li>children: offer the possibility to construct hierarchies;<\/li>\n<li>stringview: used to compose the string that is shown in the Text, XML or HTML visualizer; for instance when you have a string, it shows a magnifying glass on the right; clicking it opens a modal dialog that displays the full content of the variable<\/li>\n<\/ul>\n<p>Considering the template version of foo, the visualizer template bellow sets the text to be shown in the preview. It&#8217;s the same result as with the AutoExpand rule.<\/p>\n<pre class=\"prettyprint\">\r\nfoo&lt; * > {\r\n\tpreview \r\n\t(\r\n\t  #(\r\n\t\t\"X=\",\r\n\t\t[$c.X, X], \r\n\t\t\", Y=\",\r\n\t\t[$c.Y, X], \r\n\t\t\", Z=\",\r\n\t\t[$c.Z, X]\r\n\t  )\r\n\t)\r\n}\r\n<\/pre>\n<p><\/p>\n<p>If you are interested to see the sum of the values, in decimal, you could add a children element like this:<\/p>\n<pre class=\"prettyprint\">\r\nchildren\r\n(\r\n  #(\r\n\tsum: [$c.X + $c.Y + $c.Z, d]\r\n  )\r\n)\r\n<\/pre>\n<p>\nThe Watch window now looks like this:<\/p>\n<p><img decoding=\"async\" title=\"Visualizer with childrens\" alt=\"Visualizer with childrens\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2007\/04\/autoexp3.png\" align=\"middle\" \/><\/p>\n<p>But now the X, Y and Z members are gone. You can shown them modifying the children:<\/p>\n<pre class=\"prettyprint\">\r\nchildren\r\n(\r\n  #(\r\n\tX: [$c.X, X],\r\n\tY: [$c.Y, X],\r\n\tZ: [$c.Z, X],\r\n\t[sum]: [$c.X + $c.Y + $c.Z, d]\r\n  )\r\n)\r\n<\/pre>\n<p><\/p>\n<p><img decoding=\"async\" title=\"Visualizer with childrens\" alt=\"Visualizer with childrens\" src=\"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2007\/04\/autoexp4.png\" align=\"middle\" \/><\/p>\n<p>To show original members with the auto evaluation, you can use [$c, !]. However, the parser seems to be unstable, and many times it yields errors that may confuse it, or it could work in a way you don&#8217;t understand. At least that&#8217;s my case.<\/p>\n<p>The visualizers are more complicated. They allow displaying of array, lists, trees, and could contain conditional statements. You actually have to use variable $c to dereference the current variable. A good attempt to document it can be found at <a href=\"http:\/\/www.virtualdub.org\/blog\/pivot\/entry.php?id=120\">http:\/\/www.virtualdub.org\/blog\/pivot\/entry.php?id=120<\/a>. I recommend reading this article for more information avout visualizers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Suppose you have a class foo like this: class foo { public: int X; int Y; int Z; foo(int x = 0, int y = 0, int z = 0): X(x), Y(y), Z(z) {} }; And you have a variable f(1, 2, 3) what you watch in your Watch window. The window looks like this: &#8230; <a title=\"Customize autoexp.dat for own types in VS2005\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/\" aria-label=\"Read more about Customize autoexp.dat for own types in VS2005\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[9,10],"tags":[],"class_list":["post-26","post","type-post","status-publish","format-standard","hentry","category-articles_and_tutorials","category-visual-studio"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Customize autoexp.dat for own types in VS2005\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2007-04-06T08:35:45+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-07-15T20:40:29+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Customize autoexp.dat for own types in VS2005\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#article\",\"name\":\"Customize autoexp.dat for own types in VS2005\",\"headline\":\"Customize autoexp.dat for own types in VS2005\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/mariusbancila.ro\\\/blog\\\/wp-content\\\/uploads\\\/2007\\\/04\\\/autoexp1.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#articleImage\"},\"datePublished\":\"2007-04-06T03:35:45+02:00\",\"dateModified\":\"2011-07-15T22:40:29+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":6,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#webpage\"},\"articleSection\":\"Articles &amp; Tutorials, Visual Studio\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"name\":\"Visual Studio\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"position\":4,\"name\":\"Visual Studio\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#listItem\",\"name\":\"Customize autoexp.dat for own types in VS2005\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#listItem\",\"position\":5,\"name\":\"Customize autoexp.dat for own types in VS2005\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"name\":\"Visual Studio\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/\",\"name\":\"Customize autoexp.dat for own types in VS2005\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2007\\\/04\\\/06\\\/tweaking-autoexpdat-for-custom-types-in-vs2005\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2007-04-06T03:35:45+02:00\",\"dateModified\":\"2011-07-15T22:40:29+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Customize autoexp.dat for own types in VS2005","description":"","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#article","name":"Customize autoexp.dat for own types in VS2005","headline":"Customize autoexp.dat for own types in VS2005","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2007\/04\/autoexp1.png","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#articleImage"},"datePublished":"2007-04-06T03:35:45+02:00","dateModified":"2011-07-15T22:40:29+02:00","inLanguage":"en-US","commentCount":6,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#webpage"},"articleSection":"Articles &amp; Tutorials, Visual Studio"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","name":"Visual Studio"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","position":4,"name":"Visual Studio","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#listItem","name":"Customize autoexp.dat for own types in VS2005"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#listItem","position":5,"name":"Customize autoexp.dat for own types in VS2005","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","name":"Visual Studio"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/","name":"Customize autoexp.dat for own types in VS2005","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2007-04-06T03:35:45+02:00","dateModified":"2011-07-15T22:40:29+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"Customize autoexp.dat for own types in VS2005","og:url":"https:\/\/mariusbancila.ro\/blog\/2007\/04\/06\/tweaking-autoexpdat-for-custom-types-in-vs2005\/","article:published_time":"2007-04-06T08:35:45+00:00","article:modified_time":"2011-07-15T20:40:29+00:00","twitter:card":"summary","twitter:title":"Customize autoexp.dat for own types in VS2005"},"aioseo_meta_data":{"post_id":"26","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:04:15","updated":"2025-12-12 07:07:08","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":6,"uagb_excerpt":"Suppose you have a class foo like this: class foo { public: int X; int Y; int Z; foo(int x = 0, int y = 0, int z = 0): X(x), Y(y), Z(z) {} }; And you have a variable f(1, 2, 3) what you watch in your Watch window. The window looks like this:&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/articles_and_tutorials\/\" class=\"advgb-post-tax-term\">Articles &amp; Tutorials<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">Visual Studio<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Articles &amp; Tutorials<\/span>","<span class=\"advgb-post-tax-term\">Visual Studio<\/span>"]}},"comment_count":"6","relative_dates":{"created":"Posted 20 years ago","modified":"Updated 15 years ago"},"absolute_dates":{"created":"Posted on April 6, 2007","modified":"Updated on July 15, 2011"},"absolute_dates_time":{"created":"Posted on April 6, 2007 3:35 am","modified":"Updated on July 15, 2011 10:40 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-q","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":2,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":1052,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/26\/revisions\/1052"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}