小编MSa*_*ers的帖子

GCC编译错误:'strlen'的声明必须可用

我的问题是,当我想创建一个下载的库时,我从GCC得到一些奇怪的编译错误,编译器要求纠正的代码似乎是正确的.

错误都是这样的:

Catalogue.h:96:错误:'strlen'没有依赖于模板参数的参数,因此'strlen'的声明必须是可用的

这是第96行的代码:

GaCatalogueEntry(const char* name, T* data)
{
    if( name )
    {
        _nameLength = (int)strlen( name ); // LINE 96

        // copy name
        _name = new char[ _nameLength + 1 ];
        strcpy( _name, name );       // LINE 100: similar error

        _data = data;

        return;
    }

    _name = NULL;
    _nameLength = 0;
    _data = NULL;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这些编译错误?

c++ gcc compiler-errors

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

是否可以在没有清理的情况下允许动态SQL?

我在PHP项目上的合作伙伴反对我总是在动态SQL中清理整数值的做法.我们尽可能使用参数化查询.但是对于UPDATE和DELETE条件,Zend_Db_Adapter需要一个非参数化的SQL字符串.这就是为什么我,即使没有想到,总是写下这样的东西:

$db->delete('table_foo', 'id = ' . intval($obj->get_id()));
Run Code Online (Sandbox Code Playgroud)

这是等效的,但是(我已检查过ZF源代码)的更短版本:

$db->delete('table_foo', $db->qouteInto('id = ?', $obj->get_id(), 'INTEGER'));
Run Code Online (Sandbox Code Playgroud)

我的伙伴强烈反对这一点intval(),说如果$objID为null(该对象尚未保存到DB),我将不会注意到错误,并且DB操作将以静默方式执行.这就是他实际发生的事情.

他说,如果我们清理所有HTML表单输入,那么整数ID就不可能进入'; DROP TABLE ...',或' OR 1 = 1'或者另一个讨厌的值,并插入到我们的SQL查询中.因此,我只是偏执,使我们的生活变得更加复杂."不要再相信$_SESSION价值了"他说.

但是,对于字符串值条件,他同意:

$db->update->(
    'table_foo',
    $columns,
    'string_column_bar = ' . $db->qoute($string_value))
);
Run Code Online (Sandbox Code Playgroud)

我没有证明他错了,他没有证明我错了.你能做到吗?

php sql security zend-framework

5
推荐指数
2
解决办法
556
查看次数

在C#控件中使用Unicode字符

我想将希腊字母omega(U + 03A9)添加到我放在表单上的标签上.我已经切换了表单的编码,但是如何设置标签的内容以便出现omega而不是UTF char代码.

所以拿这个XAML

<Label Height="25">U+03A9</Label>
Run Code Online (Sandbox Code Playgroud)

我希望将U + 03A9转换为欧米茄

在后面的代码中我相信我可以做类似的事情

targetEncoding = Encoding.getEncoding(utfEncoding);
lblOmega.Content = targetEncoding.getBytes("\u03A9");
Run Code Online (Sandbox Code Playgroud)

但我想知道我是否可以在XAML中严格执行此操作

c# unicode xaml

5
推荐指数
2
解决办法
4248
查看次数

SendMessage总是返回ZERO?

为什么Windows SendMessage()总是返回ZERO,即使邮件传递成功?有没有用SendMessage()检查邮件传递失败?

编辑

忘记提到我在c ++ DLL中使用SendMessage()

LRESULT result = ::SendMessage(hwndOtherWindow,WM_COPYDATA, NULL/*(WPARAM)this->GetSafeHwnd()*/,(LPARAM)&structCDS);
Run Code Online (Sandbox Code Playgroud)

"结果"始终为零:(,但消息成功传递到其他窗口

编辑

BOOL CDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
    return /*CDialog::OnCopyData(pWnd, pCopyDataStruct)*/ true;  //true is the trick
 }
Run Code Online (Sandbox Code Playgroud)

c++ windows

5
推荐指数
1
解决办法
7916
查看次数

SFINAE的问题

为什么这个代码(M类中的fnc值)不能通过SFINAE规则解决?我收到一个错误:

Error   1   error C2039: 'type' : is not a member of
                                   'std::tr1::enable_if<_Test,_Type>'  
Run Code Online (Sandbox Code Playgroud)

当然类型不是成员,它没有在enable_if的这个通用版本中定义,但是如果bool为真,并且如果它是假的则不实例化那么这不是fnc的这个版本背后的全部想法吗?可以请有人向我解释一下吗?

#include <iostream>
#include <type_traits>

using namespace std;

template <class Ex> struct Null;
template <class Ex> struct Throw;

template <template <class> class Policy> struct IsThrow;

template <> struct IsThrow<Null> {
    enum {value = 0};
};

template <> struct IsThrow<Throw> {
    enum {value = 1};
};

template <template <class> class Derived>
struct PolicyBase {
    enum {value = IsThrow<Derived>::value};
};

template<class Ex>
struct Null : PolicyBase<Null> { };

template<class …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae

5
推荐指数
1
解决办法
848
查看次数

我们如何在Windows Phone中设置TextBlock的背景图像?

在Windows Phone中设置textblock的背景时遇到问题.

<TextBlock Text="Forget Password" Height="19" Width="156">
Run Code Online (Sandbox Code Playgroud)

windows silverlight windows-phone-7

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

c ++检查大括号是否匹配

我被问到作为奖励编程挑战,看看大括号是否匹配随机字符串或像这样的字符:{1 + 1}这将返回1,而{1 + 1})将返回0.这就是我所拥有的到目前为止,它似乎没有做任何事情.任何帮助都会很棒?谢谢

//bonus.cpp
#include <iostream>
#include <string>
#include <queue>
#include <stack>

using namespace std;

int checkBraces (string s)
{
    //int myLength = s.length();
    std::stack<int> stack;
    char d;

    for (int i = 0; i < s.length(); i++)
    {
        char c = s[i];

        if (c == '(')
        {
            stack.push(c);
        }
        else if (c == '[') 
        {
            stack.push(c);
        }
        else if (c == '{')
        {
            stack.push(c);
        }

        else if (c == ')')
        {
            if (stack.empty())
            {
                return false;
            }
            else …
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
2
解决办法
5084
查看次数

在模板中表达左移或右移的优雅方式

我目前有一个模板功能,根据其模板参数A和B,可以向左或向右移动一个值:

template <int A, int B> void f(X) {
// ...
if (A >= B)
{
  SetValue(X << (A-B));
}
else // (A < B)
{
  SetValue(X >> (B-A));
}
Run Code Online (Sandbox Code Playgroud)

当我实例化模板时A<B,我在(无法到达)第一个分支上得到一个负向移位警告,否则我会收到第一个分支上留下负移位的警告.我们的代码库没有警告,所以这是不可接受的.这两个班次陈述是否有简洁易读的替代方案?

类似的问题(例如,向左或向右动态移动)没有这种虚假警告,因为移位距离是那里的运行时变量.

c++

5
推荐指数
2
解决办法
998
查看次数

有没有办法找到要在GetProcAddress中使用的C++受损名称?

GetProcAddress与C++ 一起使用的常见"解决方案" 是"extern"C",但它打破了重载.名称修改允许多个函数共存,只要它们的签名不同.但是有没有办法找到这些受损的名称GetProcAddress

windows visual-c++

5
推荐指数
2
解决办法
3211
查看次数

mysql如何更新自己的表工作

我在MYSQL中有一个表:

CREATE TABLE test.tem(a INT,b INT);    
Run Code Online (Sandbox Code Playgroud)

以下数据:

INSERT INTO test.tem VALUES(1,2),(1,1),(1,NULL),(2,3);
Run Code Online (Sandbox Code Playgroud)

现在数据应该是:

+------+------+
| a    | b    |
+------+------+
|    1 |    2 |
|    1 |    1 |
|    1 | NULL |
|    2 |    3 |
+------+------+
Run Code Online (Sandbox Code Playgroud)

我想按列a将列b更新到min(b)组.

所以SQL应该是:

UPDATE test.tem o
SET o.b = (SELECT
             MIN(b)
           FROM test.tem i
           WHERE i.a = o.a)
Run Code Online (Sandbox Code Playgroud)

但是MYSQL 无法在FROM子句中指定更新目标表

所以我认为下面的SQL可以很好地解决我的问题:

UPDATE test.tem t1
  JOIN test.tem t2
    ON t1.a = t2.a
SET t1.b = t2.b
WHERE t1.b IS NULL
     OR t1.b …
Run Code Online (Sandbox Code Playgroud)

mysql sql group-by sql-update

5
推荐指数
1
解决办法
9901
查看次数