在调试与运行时执行不同内容 (1)断点可以设置他的值(2)通过#define如下面#ifdef _DEBUG#define new DEBUG_NEW#endif 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int sleeptime = 5000; #ifdef _DEBUG sleeptime = 500; #endif _DEBUG我想让sleeptime 在调试的时候是500,直接运行是5000,为什么直接运行生成的exe程序sleeptime还是500?这个sleeptime 实际上就是程序启动画面显示的时间 怎么写?是向注册表写入吗?因为我想到PhotoShop启动的时候会在启动时读取一些配置信息。那具体如何实现呢? 你说的直接运行,还是DEBUG版本?直接运行你编译成release版本 我切换到release,然后F5调试,结果还是500 在mfc里可以用命令行参数吗?有的话请具体下代码 vs2013按F5是调试,按CTRL+F5是开始执行(不调试),我说的直接执行就是这个引用: Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正区别,在于一组编译选项。也就是说在编译的时候 Debug 和 Release版本就有所区别了,那么不论是调试,还是开始执行(不调试),两种版本的区别都会反映出来,对吗?那为什么我6楼的代码没有效果呢,2种版本下sleeptime都是500?另外,直接双击运行生成的exe程序,或者运行由exe程序创建的快捷方式,此时是以什么方式运行? 怎么写?是向注册表写入吗?因为我想到PhotoShop启动的时候会在启动时读取一些配置信息。那具体如何实现呢?写注册表也行,但是写注册表你改参数的时候比较麻烦,而且拷贝到其他电脑的时候可能需要重新设置你的参数值。你可以在你的可执行文件目录下生成一个config.ini文件格式如下[配置1]参数1=5000[配置2]参数2=20131100参数3=20131100Par = ::GetPrivateProfileInt("配置1", "参数1", 0, ".\\config.ini");获取参数1的值,当你不需要调试时将该值改为正常需要的值。需要程序改值得话::WritePrivateProfileString("配置1", "参数1", "3306", ".\\config.ini");另外获取字符处GetPrivateProfileString("配置1", "参数1", NULL, IPAddress, 1024, ".\\config.ini");其他你可以查一下msdn 在mfc里可以用命令行参数吗?有的话请具体下代码在命令行中执行程序 "C:\test\app.exe" -1 -2 方法一 ::GetCommandLine(); 将获取到 "C:\test\app.exe" -1 -2 方法二 for (int i=0;i<__argc;i++) { __argv[i]; 将依次得到C:\test\app.exe -1 -2 } 方法三 AfxGetApp()->m_lpCmdLine; 将获取到 -1 -2 其他方法 如果希望支持MFC应用程序的标准命令行,还可以使用MFC中的CCommandLineInfo类。希望对你有帮助 我没说清楚,执行是直接执行,不调试,所以不存在断点一说int sleeptime = 5000; #ifdef _DEBUG sleeptime = 500; #endif _DEBUG你这样写会报错的,要像下面那样写:#ifdef _DEBUG#define DataValue 500 #else#define DataValue 1000#endif _DEBUG用的时候,如:int n = DataValue;这样的话,在debug就会变成500,在Release会变成1000 我没说清楚,执行是直接执行,不调试,所以不存在断点一说int sleeptime = 5000; #ifdef _DEBUG sleeptime = 500; #endif _DEBUG你这样写会报错的,要像下面那样写:#ifdef _DEBUG#define DataValue 500 #else#define DataValue 1000#endif _DEBUG用的时候,如:int n = DataValue;这样的话,在debug就会变成500,在Release会变成1000刚刚又试了一下,2种方法都可以的 在mfc里可以用命令行参数吗?有的话请具体下代码在命令行中执行程序 "C:\test\app.exe" -1 -2 方法一 ::GetCommandLine(); 将获取到 "C:\test\app.exe" -1 -2 方法二 for (int i=0;i<__argc;i++) { __argv[i]; 将依次得到C:\test\app.exe -1 -2 } 方法三 AfxGetApp()->m_lpCmdLine; 将获取到 -1 -2 其他方法 如果希望支持MFC应用程序的标准命令行,还可以使用MFC中的CCommandLineInfo类。希望对你有帮助使用命令行的话,在哪里传入参数呢? 在命令行下执行程序,开始-运行-输入cmd确定。在弹出的控制台中输入程序完整路径 后面携带参数 就应该用宏切换,最通用的方法!#ifdef _DEBUG#define DataValue 500 #else#define DataValue 100 #endif // _DEBUG GetCurrentDirectory()调试时当前路径和直接运行时的当前路径是不一样的!你可以用这个方法来判断是调试运行的,还是直接双击运行的! 不一样啊?不都是Debug下的.EXE吗 如何获得某项目自己的版本号? 客户区绘制界面问题~~大家来看看 如何判断单击了按钮 MFC做了个控件,想接收键盘输入。 ADO与DAO如何同时使用? 怎么仔VC源码中可以识别日文单词,在Win2K的系统中? (菜鸟问题)请问一下include <> 和 include" "有什么区别呢? VC中如何将HWND转换为CDC ? document->view [急] 如何得到金山WPS设置程序窗口内的按钮句柄 WinExec执行快捷方式找不到文件,但是执行源文件可以 VC++菜单前打钩的问题
#ifdef _DEBUG
sleeptime = 500;
#endif _DEBUG
我想让sleeptime 在调试的时候是500,直接运行是5000,为什么直接运行生成的exe程序sleeptime还是500?这个sleeptime 实际上就是程序启动画面显示的时间
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
Debug 和 Release 的真正区别,在于一组编译选项。也就是说在编译的时候 Debug 和 Release版本就有所区别了,那么不论是调试,还是开始执行(不调试),两种版本的区别都会反映出来,对吗?那为什么我6楼的代码没有效果呢,2种版本下sleeptime都是500?另外,直接双击运行生成的exe程序,或者运行由exe程序创建的快捷方式,此时是以什么方式运行?
写注册表也行,但是写注册表你改参数的时候比较麻烦,而且拷贝到其他电脑的时候可能需要重新设置你的参数值。
你可以在你的可执行文件目录下生成一个config.ini文件格式如下
[配置1]
参数1=5000
[配置2]
参数2=20131100
参数3=20131100
Par = ::GetPrivateProfileInt("配置1", "参数1", 0, ".\\config.ini");获取参数1的值,当你不需要调试时将该值改为正常需要的值。
需要程序改值得话::WritePrivateProfileString("配置1", "参数1", "3306", ".\\config.ini");
另外获取字符处GetPrivateProfileString("配置1", "参数1", NULL, IPAddress, 1024, ".\\config.ini");
其他你可以查一下msdn
方法一
::GetCommandLine();
将获取到 "C:\test\app.exe" -1 -2 方法二
for (int i=0;i<__argc;i++)
{
__argv[i];
将依次得到C:\test\app.exe -1 -2
} 方法三
AfxGetApp()->m_lpCmdLine;
将获取到 -1 -2 其他方法
如果希望支持MFC应用程序的标准命令行,还可以使用MFC中的CCommandLineInfo类。
希望对你有帮助
#ifdef _DEBUG
sleeptime = 500;
#endif _DEBUG你这样写会报错的,要像下面那样写:
#ifdef _DEBUG
#define DataValue 500
#else
#define DataValue 1000
#endif _DEBUG用的时候,如:
int n = DataValue;这样的话,在debug就会变成500,在Release会变成1000
#ifdef _DEBUG
sleeptime = 500;
#endif _DEBUG你这样写会报错的,要像下面那样写:
#ifdef _DEBUG
#define DataValue 500
#else
#define DataValue 1000
#endif _DEBUG用的时候,如:
int n = DataValue;这样的话,在debug就会变成500,在Release会变成1000刚刚又试了一下,2种方法都可以的
方法一
::GetCommandLine();
将获取到 "C:\test\app.exe" -1 -2 方法二
for (int i=0;i<__argc;i++)
{
__argv[i];
将依次得到C:\test\app.exe -1 -2
} 方法三
AfxGetApp()->m_lpCmdLine;
将获取到 -1 -2 其他方法
如果希望支持MFC应用程序的标准命令行,还可以使用MFC中的CCommandLineInfo类。
希望对你有帮助
使用命令行的话,在哪里传入参数呢?
#ifdef _DEBUG
#define DataValue 500
#else
#define DataValue 100
#endif // _DEBUG