小编cpp*_*hon的帖子

'int [0]'c ++的初始化程序太多了

第一:

int k[] ={1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

第二:

struct slk
{
    int k[] ={1,2,3,4,5};
};
Run Code Online (Sandbox Code Playgroud)

对于这两个陈述,为什么第一个通过编译但第二个给我

错误:'int [0]'的初始化程序太多.如果我设置k [5],则编译将通过;

这个错误信息意味着什么?注意:在GNU GCC版本4.7.2上测试的代码

c++ arrays struct initialization c++11

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

如何找到Linux模块路径

在linux中,lsmod列出了很多模块。但是我们如何才能找到这些模块的加载位置。对于某些模块,linux 命令“modprobe -l”显示了路径,但有些则没有。
编辑我也试过“查找”和“定位”。他们都列出了所有类型的版本

locate fake
/svf/SVDrv/kernel/linux/.fake.ko.cmd
/svf/SVDrv/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv/kernel/linux/.fake.o.cmd
/svf/SVDrv/kernel/linux/fake.ko
/svf/SVDrv/kernel/linux/fake.mod.o
/svf/SVDrv/kernel/linux/fake.o
/svf/SVDrv.03.11.2014.16.00/kernel/linux/.fake.ko.cmd
/svf/SVDrv.03.11.2014.16.00/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.03.11.2014.16.00/kernel/linux/.fake.o.cmd
/svf/SVDrv.03.11.2014.16.00/kernel/linux/fake.ko
/svf/SVDrv.03.11.2014.16.00/kernel/linux/fake.mod.o
/svf/SVDrv.03.11.2014.16.00/kernel/linux/fake.o
/svf/SVDrv.04.29.2014.17.39/kernel/linux/.fake.ko.cmd
/svf/SVDrv.04.29.2014.17.39/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.04.29.2014.17.39/kernel/linux/.fake.o.cmd
/svf/SVDrv.04.29.2014.17.39/kernel/linux/fake.ko
/svf/SVDrv.04.29.2014.17.39/kernel/linux/fake.mod.o
/svf/SVDrv.04.29.2014.17.39/kernel/linux/fake.o
/svf/SVDrv.05.05.2014.11.25/kernel/linux/.fake.ko.cmd
/svf/SVDrv.05.05.2014.11.25/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.05.05.2014.11.25/kernel/linux/.fake.o.cmd
/svf/SVDrv.05.05.2014.11.25/kernel/linux/fake.ko
/svf/SVDrv.05.05.2014.11.25/kernel/linux/fake.mod.o
/svf/SVDrv.05.05.2014.11.25/kernel/linux/fake.o
/svf/SVDrv.05.05.2014.17.43/kernel/linux/.fake.ko.cmd
/svf/SVDrv.05.05.2014.17.43/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.05.05.2014.17.43/kernel/linux/.fake.o.cmd
/svf/SVDrv.05.05.2014.17.43/kernel/linux/fake.ko
/svf/SVDrv.05.05.2014.17.43/kernel/linux/fake.mod.o
/svf/SVDrv.05.05.2014.17.43/kernel/linux/fake.o
/svf/SVDrv.05.07.2014.14.59/kernel/linux/.fake.ko.cmd
/svf/SVDrv.05.07.2014.14.59/kernel/linux/.fake.mod.o.cmd
/svf/SVDrv.05.07.2014.14.59/kernel/linux/.fake.o.cmd
/svf/SVDrv.05.07.2014.14.59/kernel/linux/fake.ko
/svf/SVDrv.05.07.2014.14.59/kernel/linux/fake.mod.o
/svf/SVDrv.05.07.2014.14.59/kernel/linux/fake.o
Run Code Online (Sandbox Code Playgroud)

linux linux-device-driver linux-kernel

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

可变参数模板解压缩typename的参数

我想解压缩参数包func(参见第A行),但它不起作用.如何在func <>内解包或仅修改A行?

#include <iostream>
using namespace std;

void func()
{
   cerr << "EMPTY" << endl;
}

template <class A, class ...B> void func()
{
   cerr << "A: "  << endl;
   func<B... >(); // line A
}


int main(void)
{
   func<int,int>();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

预期输出:

A:
A:
Run Code Online (Sandbox Code Playgroud)

编辑:所有答案都非常好.非常感谢

c++ templates variadic-templates c++11

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

org.apache.commons.lang.SerializationException:java.lang.ClassNotFoundException

我正在使用org.apache.commons.lang.SerializationUtils,但是我收到了一个错误.如果您需要更多信息我是Java新手,请告诉我代码:

Profile profile2 = new Profile();
profile2.setFileName(path);
profile2.setStatus("UPLOADED");
byte[] payload2 = SerializationUtils.serialize(profile2);
profile = (Profile) SerializationUtils.deserialize(payload2);
Run Code Online (Sandbox Code Playgroud)

运行时错误输出:

org.apache.commons.lang.SerializationException: java.lang.ClassNotFoundException: com.xxx.xxx.Profile
        at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:166)
        at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:193)
Run Code Online (Sandbox Code Playgroud)

人们说Profile不在classpath中.如果确实如此,则会在"new Profile()"上发生错误.我对吗?

我找到了一个解决方法:

profile = (EveSuccessCriteriaProfile) SerializationUtils.deserialize(payload2);
Run Code Online (Sandbox Code Playgroud)

取而代之

InputStream fis = null;
fis = new ByteArrayInputStream(payload2);
ObjectInputStream o = new ObjectInputStream(fis);
profile = (Profile) o.readObject();
Run Code Online (Sandbox Code Playgroud)

它工作正常

java spring osgi classloader deserialization

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

c ++共享标志段错误

不小心,我用--shared标志与hello world c ++程序链接并获得了一个exe文件.但是当我运行它时输出是段错误的.有人能告诉我背后的原因吗?

重现方式:

eclipse c ++中的标准c ++ hello world问题.检查设置 - >共享库设置中的共享标志框.

构建输出:

make all building file:../ app.cpp Invoking:GCC C++ Compiler g ++ -O0 -g3 -Wall -c -fmessage-length = 0 -fPIC -MMD -MP -MF"app.d"-MT"app.d "-o"app.o""../app.cpp"完成建筑:../ app.cpp

构建目标:应用程序调用:GCC C++链接器g ++ -shared -o"app"./app.o
完成的构建目标:app

执行输出:分段错误

谢谢

c++ linker share

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

cppreference中的regex_search抛出错误

我在cppreference网站上运行了示例程序并抛出错误.怎么可能?请帮忙

我也尝试使用我的4.8.1 GCC编译器,它也会抛出错误.

输出:

抛出'std :: regex_error'的实例后终止调用

  what():  regex_error
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include <string>
#include <regex>

int main()
{
    std::string lines[] = {"Roses are #ff0000",
                           "violets are #0000ff",
                           "all of my base are belong to you"};

    std::regex color_regex("#([a-f0-9]{2})"
                            "([a-f0-9]{2})"
                            "([a-f0-9]{2})");

    for (const auto &line : lines) {
        std::cout << line << ": " 
                  << std::regex_search(line, color_regex) << '\n';
    }   

    std::smatch color_match;
    for (const auto &line : lines) {
        std::regex_search(line, color_match, color_regex);
        std::cout << "matches for '" << line << …
Run Code Online (Sandbox Code Playgroud)

regex c++11

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

c ++ boost模板类型和非类型

template <class Target>
struct unwrap_predicate<void (Target)>
{
    typedef is_convertible<mpl::_, Target> type;
};
Run Code Online (Sandbox Code Playgroud)

这是来自Boost库的整个程序的一段代码,请参阅:http://www.boost.org/doc/libs/release/boost/parameter/preprocessor.hpp

我不明白Target.Class旁边的第一个Target.这是一个类型参数.第二个void(Target)看起来像我的非类型参数.一个参数如何作为类型和非类型.我对这两行感到困惑.有人可以帮忙吗?

c++ templates boost

0
推荐指数
1
解决办法
117
查看次数

减少c ++中的代码重复

我可以将以下代码减少为一个功能吗?他们中的大多数都是一样的.谢谢

void info(StreamLog &streamLog)
{
    streamLog.ss << "info:";
    streamLog.mFilter->setLogLevel("info");
}
void debug(StreamLog &streamLog)
{
    streamLog.ss << "debug:";
    streamLog.mFilter->setLogLevel("debug");
}
void warning(StreamLog &streamLog)
{
    streamLog.ss << "warning:";
    streamLog.mFilter->setLogLevel("warning");
}
void error(StreamLog &streamLog)
{
    streamLog.ss << "error:";
    streamLog.mFilter->setLogLevel("error");
}
void critical(StreamLog &streamLog)
{
    streamLog.ss << "critical:";
    streamLog.mFilter->setLogLevel("critical");
}
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请告诉我

第1编辑:抱歉!我没有清楚地解释我的情况.我使用那些函数作为操纵器.因此,我能做到

clog << info << ...

clog << warning << ...

我不想用

clog << log(info)<< ...

有更好的方法吗?谢谢

c++ refactoring

0
推荐指数
1
解决办法
177
查看次数