小编Dan*_*ngs的帖子

为何选择功能语言

我在这里看到很多关于函数式语言和东西的讨论.你为什么要使用"传统"语言?他们做得更好?他们更糟糕的是什么?什么是理想的函数式编程应用程序?

programming-languages functional-programming

330
推荐指数
16
解决办法
18万
查看次数

如何判断窗口是否具有焦点?(Win32 API)

使用Win32 API(在C中,但这是无关紧要的)如何判断给定窗口(由HWND标识)是否具有焦点?我正在挂钩观看活动的应用程序,当该事件发生时,我想检查应用程序是否已经有焦点.如果没有,我想要闪烁窗口,直到它们为焦点.

或者,FlashWindowEx结构标志FLASHW_TIMERNOFG闪烁,直到窗口具有焦点,如果窗口已经具有焦点,则不闪烁?我现在无法测试这个,因为我不在我的开发环境中,但我的印象是它会闪现,这正是我想要避免的.

编辑:此外,如果重要,应用程序在此窗口中使用DirectX.

windows winapi hwnd

25
推荐指数
3
解决办法
5万
查看次数

禁止发布ClickOnce部署的调试版本

有没有办法禁止使用ClickOnce发布调试版本?

我只想允许发布版本,但是现在人为错误导致调试版本偶尔会漏掉.

我们正在Visual Studio中发布构建.

clickonce

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

使用Char数组作为参数的模板元编程

我在GCC 4.3.2的C++ 11的半实现中玩TMP,我想知道是否有办法以某种方式执行以下操作:

template <char x, char... c>
struct mystruct {
...
};

int main () {

   mystruct<"asdf">::go();

}
Run Code Online (Sandbox Code Playgroud)

它显然不会让我这样做,我认为通过在编译时使用用户定义的文字转换"asdf"字符串我会很幸运,但GCC 4.3不支持用户定义的文字...

有什么建议?我宁愿不做'a','s','d','f',因为这严重妨碍了我对这个项目的计划.

c++ gcc templates metaprogramming c++11

12
推荐指数
2
解决办法
1万
查看次数

MSVC 和 Clang/GCC 之间的 C++17 条件(三元)运算符不一致

以下代码在 C++17 标准下的 Clang/GCC 下编译,但在带有-std:C++17 /Zc:ternary.

struct CStringPtr
{
    const char *m_pString = nullptr;

    CStringPtr() = default;
    CStringPtr( const char *pString ) : m_pString( pString ) { }

    operator const char *() const { return m_pString; }
};

int main( int argc, char ** )
{
    bool b = !!argc;

    const char *X = b ? CStringPtr( "inside" ) : "naked";
    const char *Y = b ? "naked" : CStringPtr( "inside" );
    CStringPtr Z = b ? CStringPtr( …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ language-lawyer c++17

7
推荐指数
1
解决办法
125
查看次数

如何在Visual Studio插件中阻止OpenFile

我有一个Visual Studio 2008插件,当我按下某个热键时,它会打开一个特定的文件(根据热键的上下文不同),然后在该文件中搜索特定的字符串(同样,依赖于上下文.)大多数时候这完美无瑕,但有时如果它打开的文件太大,搜索将失败.

这是一段代码:

Window xmlWindow = Commands.Application.ItemOperations.OpenFile(objectFilename, EnvDTE.Constants.vsViewKindPrimary);
Find find = xmlWindow.Document.DTE.Find;
find.Action = vsFindAction.vsFindActionFind;
find.FindWhat = String.Format("Name=\"{0}\"", objectLocalName);
if (find.Execute() == vsFindResult.vsFindResultFound) {
     MessageBox.Show("Found!");
}
Run Code Online (Sandbox Code Playgroud)



1.有没有办法让它始终有效(例如通过阻止OpenFile)?

2.在一个不那么重要的注意事项中,有没有一种方法可以像这样进行搜索而不会在"查找结果"窗格中显示结果(这会导致我的旧结果被此搜索清除,该搜索仅用于将光标移至那部分文件)?


c# visual-studio-addins visual-studio-2008 envdte

4
推荐指数
1
解决办法
960
查看次数

将 std::string 的 c_str() 结果分配给标准保证安全的同一个 std::string ?

标准是否保证以下代码安全std::string

#include <string>
#include <cstdio>

int main() 
{
    std::string strCool = "My cool string!";
    const char *pszCool = strCool.c_str();
    strCool = pszCool;
    printf( "Result: %s", strCool.c_str() );
}
Run Code Online (Sandbox Code Playgroud)

我见过一些声明,表明c_str只有在对同一结果std::string进行另一个方法调用之前才能保证安全使用,但我不清楚将其传递const char *回赋值方法是否安全。

当使用现实世界的编译器(GCC、Clang 和 MSVC 的最新版本)进行测试时,它们似乎都支持这种行为。

此外,编译器还支持将字符串的后缀分配回其自身,例如strCool = pszCool + 3在本例中;结果将是该字符串与传递给它的值具有相同的值。

这种行为是否以某种方式得到保证,或者我只是幸运的是我测试过的编译器提供的标准库支持这种情况?

c++ std language-lawyer

3
推荐指数
1
解决办法
194
查看次数