小编pmg*_*pmg的帖子

指向嵌套结构中的struct的指针

我正在尝试运行以下代码(在fedora 11 i586上的gcc 4.3中):

#include <stdio.h>                       
#include <stdint.h>                      
#include <stdlib.h>                      

struct s_smallstruct{
  int smallstruct;
};                      

struct s_test2{
        char * test2;
        struct s_smallstruct* smallstruct;
};

struct s_test3{
        char * test3;
        struct s_smallstruct * smallstruct;
};

struct s_test1{
        char * test1;
        struct s_test2 * test2;
        struct s_test3 * test3;
};


int main(){
        struct s_test1 *test1 = (struct s_test1 *) malloc( sizeof test1 );
        test1->test2[0].smallstruct[0].smallstruct = 123;
        int num = test1->test2[0].smallstruct[0].smallstruct;
//      struct s_smallstruct * smallstruct = (struct s_smallstruct *) malloc( sizeof smallstruct …
Run Code Online (Sandbox Code Playgroud)

c struct pointers

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

如何使用C++或C#为Windows Vista编写启动程序

如何用C++或C#编写在Windows Vista上启动应用程序的程序?

例如,启动Dreamweaver CS 4("C:\ Program Files\Adob​​e\Adob​​e Dreamweaver CS4\Dreamweaver.exe")并使用BringWindowToTop函数将其置于顶部?

c# c++ windows-vista

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

仅使用否定项进行 SQLite MATCH

我最近发现这在 SQLite 中是不可能的:

 SELECT * FROM fruit WHERE fruit MATCH '-apple'
Run Code Online (Sandbox Code Playgroud)

然而这是可能的:

 SELECT * FROM fruit WHERE fruit MATCH 'pear -apple'
Run Code Online (Sandbox Code Playgroud)

我使用 FTS3 和 FTS4 进行了尝试,结果相同。为什么 match 需要至少一个非否定项?我该如何解决这个限制?我需要返回所有与“apple”不匹配的水果......就是这样。有任何想法吗?

sql database sqlite full-text-search

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

在const int上定义,但将值放在已安装的头文件中

我有一个C++库,可以完成一些数值工作.主要参数是段数.对于速度来说,重要的是段数为3的因素const,但是我想在编译时使用它来定义它-DSEGMENTS 32.标题看起来像这样:

#ifdef SEGMENTS
const int segments = SEGMENTS
#else
const int segments = 20
#endif
Run Code Online (Sandbox Code Playgroud)

这样可行.但是,与这个库连接的程序没有得到-DSEGMENTS,因此segments总是20.没有const我知道解决方案,但我不知道.extern如果可以使用cmake,我可以想象一些技巧或在预编译后安装标头.

c++ cmake

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

x ++和x + 1之间究竟有什么区别?

我一直在考虑增加一个指针,但我想现在一般我不知道这两个操作/运算符之间的语义差异.例如,我的教授说如果你有一个[10]你不能说++指向下一个元素,但我从经验中知道a + 1确实有效.我问为什么,他说"a ++是一个动作而一个+ 1是一个表达".他的意思是"动作"是什么意思?如果有人能告诉我更多关于这个以及这两个操作之间的内在差异,我会非常感激.谢谢.

c operators

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

为什么没有在C中显示?

这是我在C中的代码片段:

      char *str = NULL;
      int len = -1;

      // Get length
      len = snprintf(NULL, 0, "[%d]", 2);

      // Allocate str
      str = (char *)malloc(len + 1);

      // Assign str
      snprintf(str, len, "[%d]", 2);

      assert(len == 3);

      // Display str
      puts(str);
Run Code Online (Sandbox Code Playgroud)

我希望这应该显示出来[2].而len这里是3.

但只运行此代码 [2

为什么会这样?

c format-specifiers

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

在C++中,对传递给调用函数中反映的函数的指针的更改是什么?

如果我将指针P从函数f1传递到函数f2,并修改f2中的P的内容,这些修改会自动反映在f1中吗?

例如,如果我需要删除链表中的第一个节点:

void f2( Node *p)
{
    Node *tmp = p;
    p = p -> next;
    delete tmp;
}
Run Code Online (Sandbox Code Playgroud)

对P的更改是否会反映在调用函数中,还是现在指向已释放的内存空间?

(我在这里的直观答案是否定的,没有反映变化.但是,好的消息来源告诉我上面的代码会起作用.有人可以花时间给出答案并解释它背后的推理吗?另外,如果上面的代码是错误的,我们如何在不使用返回类型的情况下实现这一点?)

c++ pointers parameter-passing

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

从内核模块使用sysfs时出现未知符号错误

嘿,我正在尝试使用sysfs一点点,从用户空间获取一些数据到我的内核模块.这是代码:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/elf.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/kobject.h>
#include <linux/sysfs.h>

#define PRINT(x) printk(KERN_INFO x "\n")
#define ERROR(fmt,arg...) printk(KERN_ALERT "Error - " fmt,##arg)



ssize_t mystore (struct kobject *obj,
                    struct attribute *attr, const char *buff, size_t count)
{
 /* doing a little bit */
        return count;
}


ssize_t myshow (struct kobject *obj, struct attribute *attr, char *buff)
{
    return 0;
}

char file_name[] = "myfile";
static struct attribute myattribute = {
    .name = file_name,
    .mode …
Run Code Online (Sandbox Code Playgroud)

c linux kernel module

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

多维数组作为平面数组问题

我正在查看有人编写的两行代码,第二行有一个例外,但我不明白为什么.

char** array = (char**) new char [2] [6];

std_strlprintf(array[0],6,"[%d]", num);
Run Code Online (Sandbox Code Playgroud)

std_strlprintf是一个Brew函数,它将格式化输出写入字符串.(num是一个0的整数值)

为什么这段代码有异常,访问数组的第一个元素为buff [0]有什么问题?


编辑:抱歉我的帖子中有一个错字.现在纠正了.这是具有异常的代码.

c++ brew-framework

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

同一字符串有两个不同的哈希值

我需要比较两个字符串的哈希值。我使用字符串“template”进行测试。但我得到了这个字符串的不同哈希值,所以它总是不一样。我使用 CryptoApi 和 MD4

int _tmain(int argc, _TCHAR* argv[])
{
    std::hash_map<int,int> table;
    HCRYPTPROV hProv1,hProv2;
    BYTE *pbBuffer1=(BYTE*)"template";//data to hash
    DWORD dwBufferLen1=strlen((char*)pbBuffer1)+1;
    HCRYPTHASH hHash1,hHash2;
    //first hash
    CryptAcquireContext(&hProv1,NULL,NULL,PROV_RSA_AES,0);
    CryptCreateHash(hProv1,CALG_MD4,0,0,&hHash1);
    CryptHashData(hHash1,pbBuffer1,dwBufferLen1,0);
    /*---------*/
    BYTE *pbBuffer2=(BYTE*)"template";//data to hash
    DWORD dwBufferLen2=strlen((char*)pbBuffer2)+1;
    //second hash
    CryptAcquireContext(&hProv2,NULL,NULL,PROV_RSA_AES,0);  
    CryptCreateHash(hProv2,CALG_MD4,0,0,&hHash2);
    CryptHashData(hHash2,pbBuffer2,dwBufferLen2,0);
    if (hHash1==hHash2)
        printf("The Same\n");
    else printf("Not same\n");
    /*---------*/
    std::cout<<hHash1<<std::endl;
    std::cout<<hHash2<<std::endl;
    if (hProv1)
        CryptReleaseContext(hProv1,0);
    if (hProv2)
        CryptReleaseContext(hProv2,0);
    system("pause");
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

例如hHash1中的哈希值

691136
Run Code Online (Sandbox Code Playgroud)

hHash2 中的哈希值

691216
Run Code Online (Sandbox Code Playgroud)

c++ cryptoapi

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