相关疑难解决方法(0)

在C++标识符中使用下划线有哪些规则?

在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo.我myFoo偶尔也见过.

C#(或者可能只是.NET)似乎建议只使用下划线,如_foo.这是否允许C++标准?

c++ standards naming-conventions c++-faq

906
推荐指数
4
解决办法
24万
查看次数

我应该在标题中使用#include吗?

是否需要#include某个文件,如果在标题(*.h)内,使用此文件中定义的类型?

例如,如果我使用GLib并希望gchar在我的标题中定义的结构中使用基本类型,是否有必要执行a #include <glib.h>,知道我已经在我的*.c文件中有它?

如果是,我还必须把它放在#ifndef#define之后#define

c file-organization c-preprocessor

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

哪里可以找到off_t类型的完整定义?

我正在使用TCP将文件从客户端发送到服务器.为了标记文件的结尾,我想在实际数据之前发送文件大小.所以我使用stat系统调用来查找文件的大小.这是类型off_t.我想知道它占用了多少字节,以便我可以在服务器端正确读取它.它定义于 <sys/types.h>.但我不明白这个定义.它只是定义__off_t or _off64_toff_t.在哪里寻找__off_t?它__也是为头文件中的大部分内容添加前缀的约定,当我读取头文件以更好地理解时会让我感到害怕.如何更好地阅读头文件?

#ifndef __off_t_defined
# ifndef __USE_FILE_OFFSET64
typedef __off_t off_t;
# else
typedef __off64_t off_t;
# endif
# define __off_t_defined
#endif 
Run Code Online (Sandbox Code Playgroud)

c sockets networking types header-files

63
推荐指数
4
解决办法
11万
查看次数

C:结构定义中指向struct的指针

如何在此结构的定义中指向下一个结构的指针:

typedef struct A {
  int a;
  int b;
  A*  next;
} A;
Run Code Online (Sandbox Code Playgroud)

这是我第一次写它但它不起作用的方式.

c struct pointers

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

正确使用strtol

下面的程序将字符串转换为long,但根据我的理解,它也会返回错误.我依赖的事实是,如果strtol将字符串成功转换为long,那么第二个参数strtol应该等于NULL.当我用55运行以下应用程序时,我收到以下消息.

./convertToLong 55
Could not convert 55 to long and leftover string is: 55 as long is 55
Run Code Online (Sandbox Code Playgroud)

如何成功检测strtol的错误?在我的应用程序中,零是有效值.

码:

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

static long parseLong(const char * str);

int main(int argc, char ** argv)
{
    printf("%s as long is %ld\n", argv[1], parseLong(argv[1]));
    return 0;
 }

static long parseLong(const char * str)
{
    long _val = 0;
    char * temp;

    _val = strtol(str, &temp, 0);

    if(temp != '\0')
            printf("Could not convert %s to long and …
Run Code Online (Sandbox Code Playgroud)

c c++

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

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

在C程序中使用_和__

我正在读K&R书.我读:

...仅供标准库函数使用的名称,_因此它们不太可能与用户程序中的名称冲突...

这究竟意味着什么,请解释真实简单实用的方法.

我的理解是:

如果我想使用math.h中定义的sqrt那么

#include <math.h>
#define sqrt(x) x*x*x

main() 
{ 
int x=4; 
_sqrt(x); // That is from the header file math.h
sqrt(x); // my own defined macro 
/*or its the reverse way _sqrt for my own defined macro so it won't collide with original sqrt i.e. without _ for sqrt from math.h */ 
return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,我使用了在stackoverflow上读取代码__.sys/syscall.h在Windows中不存在,所以我们必须使用

#if __linux 
#include <sys/syscall.h>
#elif defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#endif
Run Code Online (Sandbox Code Playgroud)

确切__使用的地方和b/w __&的区别_ …

c

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

C Typedef和Struct问题

这两个声明之间的区别是什么,并且优先于另一个?

typedef struct IOPORT {  
    GPIO_TypeDef* port;  
    u16           pin;  
} IOPORT;  

typedef struct {  
    GPIO_TypeDef* port;  
    u16           pin;  
} IOPORT;  
Run Code Online (Sandbox Code Playgroud)

c struct typedef namespaces

10
推荐指数
3
解决办法
4487
查看次数

为什么C中的某些函数有下划线前缀?

我最近开始用C学习网络,我看到一些以下划线开头的函数_function() - 这究竟是什么意思?我也看到了这个:

 struct sockaddr_in  {  

__SOCKADDR_COMMON (sin_);  

 in_port_t sin_port;    

 struct in_addr sin_addr;    

 unsigned char sin_zero[sizeof (struct sockaddr) - 

 __SOCKADDR_COMMON_SIZE -  

sizeof (in_port_t) -         

sizeof (struct in_addr)];  

};
Run Code Online (Sandbox Code Playgroud)

这部分代码意味着什么:

__SOCKADDR_COMMON (sin_);

unsigned char sin_zero[sizeof (struct sockaddr) - 

 __SOCKADDR_COMMON_SIZE -  

sizeof (in_port_t) -         

sizeof (struct in_addr)];
Run Code Online (Sandbox Code Playgroud)

c sockets networking function

9
推荐指数
2
解决办法
8377
查看次数

C编程解耦接口与实现结构转发声明

我正在编写一个C程序并使用gcc 4.4.6进行编译.我不想使用c ++编译器.

我正在实现一个组件,我打算在运行时实时拥有该组件的多个实例并由其他组件拥有.

作为一种将接口的定义与其实现分离并隐藏它在该实现中使用的内部结构和数据类型的方法,我希望使用前向结构声明.

接口文件:component.h

struct _hidden_implementation_type;
typedef struct _hidden_implementation_type visible_type_to_clients;

int component_function1(visible_type_to_clients instance);
Run Code Online (Sandbox Code Playgroud)

实现文件:component.c

struct _hidden_implementation_type
{ 
    int foo;
};
Run Code Online (Sandbox Code Playgroud)

客户端文件:main.c

int main(int argc, char** argv)
{
    visible_type_to_clients a;
    return component_function1(a);
}  
Run Code Online (Sandbox Code Playgroud)

我该如何工作?还有什么其他方法可以允许多个组件实例化,并提供公共接口和实现之间的解耦?

c

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