可能重复:
用于在C中连接两个字符串的宏
如何用宏连接两个字符串?
我试过这个,但它没有给出正确的结果:
#define CONCAT(string) "start"##string##"end"
Run Code Online (Sandbox Code Playgroud) 我想在shell脚本中执行它之前检查函数是否存在.
脚本shell支持吗?怎么做?
我有以下代码,我想清理由创建的json对象json_object_new_string().
#include <json/json.h>
#include <stdio.h>
int main() {
/*Creating a json object*/
json_object * jobj = json_object_new_object();
/*Creating a json string*/
json_object *jstring = json_object_new_string("Joys of Programming");
/*Form the json object*/
json_object_object_add(jobj,"Site Name", jstring);
/*Now printing the json object*/
printf ("The json object created: %sn",json_object_to_json_string(jobj));
/* clean the json object */
json_object_put(jobj);
}
Run Code Online (Sandbox Code Playgroud)
是否行json_object_put(jobj);清洗都jobj和jstring?
或者我必须jstring单独干净json_object_put(jstring);?
编辑
问题2
如果jstring以这种方式创建一个函数会有什么行为?
#include <json/json.h>
#include <stdio.h>
static void my_json_add_obj(json_object *jobj, …Run Code Online (Sandbox Code Playgroud) 如果我将消息写入已关闭的管道,那么我的程序会崩溃
if (write(pipe, msg, strlen(msg)) == -1) {
printf("Error occured when trying to write to the pipe\n");
}
Run Code Online (Sandbox Code Playgroud)
pipe在写信之前如何检查是否仍然打开?
__builtin_bswap32() 用于反转字节(它用于littel/big endian问题(来自gcc)).
htonl() 用于反转字节(从主机到网络的转换).
我检查了两个函数,它们返回相同的结果.
是否有人可以确认两种功能都做同样的事情?(赞赏标准参赛者)
我有以下代码:
int __dmasprintf (char **s, const char *format, ...) {
char buf[512];
va_list arg;
int ret;
va_start(arg,format);
ret = vsprintf(buf, format, arg);
va_end(arg);
*s = strdup(buf);
if (*s == NULL) return -1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想在va_list arg之前的调用中添加一个参数,vsprintf()因为我format在最后包含了1个额外的参数.
如何添加一个参数(例如char * myarg)va_list arg?
或者是否可以通过vsprintf()自定义列表?
我有一个像这样的awk代码:
val = and($1, 0x03FFFFFF) + $2
Run Code Online (Sandbox Code Playgroud)
我写了这样的Perl版本:
$val = ($1 && 0x03FFFFFF) + $2;
Run Code Online (Sandbox Code Playgroud)
这条线是一样的吗?
我正在使用 libcurl 开发 ac 程序。
当我构建程序时,我可以使用不同版本的 libcurl。
当我从版本更改为其他(libcurl)版本时,我必须更改源代码中的一些块以使其适应 libcurl 版本。
我希望在代码中添加宏,该宏将检查 libcurl 版本,然后确定要自动使用的源代码块
libcurl 中是否有返回 libcurl 版本的宏函数或常量?
我知道填充,它的规则,它为什么需要等.
我的问题是结构,
struct my_struct {
int a;
char c;
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,c的起始地址是字对齐,但仍然编译器添加3个字节(假设4作为字大小)填充.在c之后没有元素,为什么我们需要这3个字节?我查了下面的,
int g_int1;
struct my_struct st;
int g_int2;
Run Code Online (Sandbox Code Playgroud)
通过以上我的意思是我的其余变量声明不依赖于先前变量大小的单词align-ness.编译器总是尝试对齐下一个变量,而不管其全局或局部自动变量.
我看不出有任何关于endian-ness的原因,因为这是char并且对于一个字节它并不重要.我认为是什么原因而不是检查最后一个元素条件编译器总是在需要时添加填充.
什么能有正当理由?
我有以下alogorithm,我想在lua中实现它.我锁定了如何在lua中实现按位运算.
void wepkey64(char *passphrase, unsigned char k64[4][5])
{
unsigned char pseed[4] = {0};
unsigned int randNumber, tmp;
int i, j;
for(i = 0; i < strlen(passphrase); i++)
{
pseed[i%4] ^= (unsigned char) passphrase[i];
}
randNumber = pseed[0] | (pseed[1] << 8) | (pseed[2] << 16) | (pseed[3] << 24);
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
randNumber = (randNumber * 0x343fd + 0x269ec3) & 0xffffffff;
tmp = (randNumber >> …Run Code Online (Sandbox Code Playgroud)