小编jac*_*hab的帖子

析构函数与成员函数竞争

当我在析构函数内部时,其他一些线程可能会开始执行对象的成员函数吗?如何应对这种情况?

c++ multithreading destructor

7
推荐指数
2
解决办法
1441
查看次数

我必须pthread_join我创建的每个线程吗?

pthread_join()手册页:

当一个 joinable 线程终止时,它的内存资源(线程描述符和stack)在线程执行之前不会被释放pthread_join.因此,pthread_join必须为每个joinable创建的线程调用一次以避免内存泄漏.

这是否意味着我需要加入我创建的每个线程以防止泄漏?但加入阻止来电者.

请解释一下.

linux multithreading

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

是否可以将对象分配给int?

我有一个CCounter类,其中包含由互斥锁保护的整数值.我已经定义了几个运算符,比如post/pre inc/dec返回一个整数,所以我可以这样做:

CCounter c(10);
int i = c++;
Run Code Online (Sandbox Code Playgroud)

但是我怎么做一个简单的任务i = c呢?我试图定义friend operator =但它给了我

operator=(int&, const CCounter&)’ must be a nonstatic member function

错误.请指教.谢谢.

c++ operator-overloading

6
推荐指数
2
解决办法
3138
查看次数

从GNU make中运行grep

我需要使用grep 找到文本'ifeq($(Param1)'.我尝试将搜索结果分配给make变量.问题是单引号不会在make中转义文本,所以当我尝试时:

GrepResult:= $(shell grep 'ifeq ($$(Param1)' TextFile)
Run Code Online (Sandbox Code Playgroud)

我明白了:

Makefile:214: *** unterminated call to function `shell': missing `)'.  Stop.
Run Code Online (Sandbox Code Playgroud)

$可以使用$$进行转义,但如何在make中转义括号?谢谢.

注意:$ GrepResult用于$(错误)函数,而不是在规则命令中.

regex grep makefile

6
推荐指数
2
解决办法
6526
查看次数

无法在32位平台上为64位整数赋值

从64位平台切换到32位平台(两者都是CentOS)后,我得到integer constant is too large for ‘long’ type以下代码行的错误

uint64_t Key = 0x100000000;
Run Code Online (Sandbox Code Playgroud)

铸造价值并没有帮助.我究竟做错了什么?

谢谢

c 64-bit types 32-bit 32bit-64bit

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

通过 ifstream 对象阻止从 FIFO 读取

我打开一个 FIFO 文件作为ifstream. 一旦对象被创建,线程就会被阻塞,直到我将一些东西发送到 FIFO 中(这对我来说没问题)。然后我调用getline()从流中获取数据。

如何再次读取阻塞线程,直到更多数据写入 FIFO 文件?

谢谢

c++ file-io filestream fifo

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

如何更新项目中的所有C/C++标识符名称

经常遇到建议不要在C/C++标识符中使用前导和双下划线后,我决定一劳永逸地修复所有源代码.我现在需要做的是转换_IdentifierIdentifier_.

我应该使用专门的工具来完成这项正常表达式的任务吗?在后一种情况下,匹配C/C++标识符的模式是什么?

c c++ regex refactoring

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

SCons:防止构造变量中的$ TEXT扩展

当我调用构建器时Program(Target, Source, CXXFLAGS=CompileFlags),CompileFlags字符串的值包含-Wl,-rpath,lib:$ORIGIN/../lib导致$ ORIGIN扩展为空字符串,而它应该保持原样.

我试图逃避美元符号,在里面添加单引号,没有任何帮助.

env['RPATH'] = Literal('lib:$ORIGIN/../lib')

它也不起作用:它产生

g++ -o main -Wl,-rpath=lib:/../lib

在命令行中,即使man页面说"添加到RPATH的路径没有被scons以任何方式转换",所以它应该在没有Literal()的情况下工作,我想.

那么如何在没有SCons的情况下添加包含$ TEXT的编译器标志来尝试将其扩展为变量?

谢谢.

scons

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

ListView中的中心文本项

我怎么能水平居中对齐的文本项ListView在我的Layout
老实说,在问这样一个基本问题之前,我用谷歌搜索了至少一个小时.

谢谢.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <EditText
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:hint="Remind..." />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:baselineAligned="false"
        android:orientation="horizontal" >

        <ListView
            android:id="@+id/listviewTimeInterval"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:scrollbars="none" />

         <-- . . . --/>
         <-- more lists of the same kind--/>
         <-- . . .--/>

    </LinearLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android android-widget android-layout

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

如何在不暴露其类型的情况下暴露 C 结构体大小?

我有以下 C 语言(不是 C++!):

module.c
    struct Private {...};
    void foo(void* private, int param) {...}

module.h
    #define PRIVATE_SIZE ???;
    void foo(void* private, int param);

main.c
    char m1[PRIVATE_SIZE];
    char m2[PRIVATE_SIZE];

    int main()
    {
        foo(m1, 10);
        foo(m2, 20);
    }
Run Code Online (Sandbox Code Playgroud)

如何在编译时公开 sizeof(Private) 以便应用程序可以静态分配其存储而不公开 Private 类型?

请注意,这是一个非常有限的嵌入式系统,动态分配不可用。

c

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