我看到一些相關的問題已被問到,但它們要麼太先進,以至於我無法掌握或缺乏分步指南從頭到尾(其中大部分最終都是內部討論他們自己的實驗結果)。 OK這裏是,鑑於這個簡單的程序:先進的Visual Studio功夫測試 - 在調試過程中從立即窗口調用函數
#include <stdio.h>
#include <string.h>
int main()
{
FILE * f;
char buffer[100];
memset(buffer, 0, 100);
fun();
f = fopen("main.cpp", "r");
fread(buffer, 1, 99, f);
printf(buffer);
fclose(f);
return 0;
}
它所做的基本上是打印本身(假設文件名是main.cpp
)。
問題
如何我可以把它打印另一個文件,說foobar.txt
無需修改源代碼?它與通過VS運行它有關,在調用fread()
之前,逐步完成函數並劫持FILE指針。通過撥打fclose()
無需擔心泄漏資源。
我想簡單f = fopen("foobar.txt", "r")
這給
CXX0017: Error: symbol "fopen" not found
任何想法?
編輯
我找到了解決辦法小心在Debugging Mozilla on Windows FAQ。正確的命令投入到即時窗口是
f = {,,MSVCR100D}fopen("foo.txt", "r")
但是,它並沒有真正回答這個問題:
- 我還是不明白這到底是怎麼回事。
- 如何系統地找出任何給定方法的
{,,MSVCR100D}
部分?我知道MSVCR版本從系統到系統的變化。我怎麼能找到這個? - 任何人都可以解釋大括號的語法,尤其是那兩個逗號在那裏做什麼?使用這種語法是否有更多隱藏的寶石?
這是一個非常詳細的寫法。我希望我可以upvote 10倍!只是好奇:你怎麼才能瞭解這個晦澀的東西?您的博客在Google上排在第二位,名稱爲「Visual C++上下文運算符」。就我個人而言,我認爲這是一個非常有用的功能。我只是不知道爲什麼它沒有更廣告或打磨得很好。 – kizzx2 2010-06-13 13:57:45
謝謝 - 我真的很擔心鏈接到我自己的博客會被視爲虛榮,但您真的不應該信任MSDN。這些只是我自己的實驗的寫作,絕不是官方的甚至是證明的。如果你(像我一樣)喜歡無證VS東西,你會在博客中找到更多。這個特定的隱藏功能可能不會很快得到任何開發者的愛 - 在評論中有一些關於它的意見。 – 2010-06-13 18:36:15