为什么我不能像这样使用struct?
typedef struct { unsigned char FirstName; unsigned char LastName; unsigned int age; } User;
User UserNick = {Nick, Watson, 24};
NSLog(@"Your paint job is (R: %NSString, G: %NSString, B: %u)",
UserNick.FirstName, UserNick.LastName, UserNick.age);
Run Code Online (Sandbox Code Playgroud)
我的意思是我确实使用了这样的结构:
typedef struct {unsigned char red; unsigned char green; unsigned char blue; } Color;
Color carColor = {255, 65,0};
NSLog(@"Your paint job is (R: %hhu, G: %hhu, B: %hhu)",
carColor.red, carColor.green, carColor.blue);
Run Code Online (Sandbox Code Playgroud) 我在编译 C 代码方面相对缺乏经验。不过,我正在尝试使用 emscripten 将 R 源代码中的算法编译为 JavaScript。该函数位于此处调用的文件中pf.c
天真地,我刚刚进入src目录并尝试:
emcc nmath/pf.c
Run Code Online (Sandbox Code Playgroud)
这导致:
In file included from nmath/pf.c:25:
nmath/nmath.h:38:10: fatal error: 'Rconfig.h' file not found
#include <Rconfig.h>
^
1 error generated.
ERROR root: compiler frontend failed to generate LLVM bitcode, halting
Run Code Online (Sandbox Code Playgroud)
我知道这个标题在哪里:
$ find . -name "Rconfig.h"
./gnuwin32/fixed/h/Rconfig.h
Run Code Online (Sandbox Code Playgroud)
我的直接问题是,我如何告诉编译器这个头文件在哪里?我想最终得到一个pfJavaScript 函数。对这个想法的任何见解将不胜感激。
在fun1()中我得到一个字符串,我需要将这个字符串数据传递给函数fun2(),它接受参数char*
function2原型如下
void fun2(char *p);
Run Code Online (Sandbox Code Playgroud)
我从fun1调用fun2,如下所示
void fun1()
{
fun2((char *)str.c_str());
}
Run Code Online (Sandbox Code Playgroud)
从const char*到char*的转换是否存在任何潜在问题
我最近被要求考虑以下代码的输出:
#include <iostream>
int gvar;
int main (void)
{
cout << &gvar << endl;
while (true);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译此代码并生成可执行文件.如果这个可执行文件在run 2中并行运行.会打印什么
我的回答是它会打印2个不同的地址.但在跑步时,我发现两个终端都打印了相同的地址.
有人可以解释为什么会这样.我知道这可能是由于虚拟内存,但我无法将各个部分放在一起.
int* dec2bin(int y){
int *arr = (int*)malloc(sizeof(int)*5);
int i;
for (i=0; i<5; i++) arr[i]=0;
return arr;
}
Run Code Online (Sandbox Code Playgroud)
这是函数dec2bin的一部分.
在这段代码,我做的arr[0]到arr[4]的一切0.
但是这个函数返回值1070192.我想回来00000.
我该怎么做才能解决这个问题?
我正在尝试编写一个生成HTTP请求标头的函数.我现在有类似的东西
static char* genHeader() {
return("POST / HTTP/1.1\r\n\
Host: www.example.com\r\n\
Content-Type: application/x-www-form-urlencoded\r\n\r\n");
}
Run Code Online (Sandbox Code Playgroud)
我知道它也可以通过以下方式完成:
static void genHeader(char *header) { memcpy(header, ...); }
Run Code Online (Sandbox Code Playgroud)
哪一个更接近生成标题的"规范"方式?在第二种方法中,我需要释放内存,而在第一种方法中我不会,对吧?
谢谢
在以下代码中:
#include<cstdio>
#define max(a,b) (a>b?a:b)
using namespace std;
int main()
{
int f=10000000;
long long i=(long long)max(1000000,f*f);
printf("%lld",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到了输出
276447232
但如果我写
long long i=max((long long)1000000,(long long)f*f);
Run Code Online (Sandbox Code Playgroud)
我得到了输出
百兆
这两条线有什么区别?为什么在第一种情况下不会发生类型转换?
我编写了一个C程序,用于使用指针显示数组的值.这是代码:
#include <stdio.h>
int main()
{
int a[] = {1, 1, 1, 1, 1};
int *ptr = a;
for (int i = 0 ; i < 5; i++)
printf("%d ", *ptr++);
printf("%d", *ptr);
}
Run Code Online (Sandbox Code Playgroud)
正如您在终止循环后所看到的那样,指针将数值的内存地址保存在数组之外.因为它没有初始化最后一个输出,它应该是一个垃圾值.但是,每次显示5是数组的大小.然后,我认为数组的已分配内存的下一个内存地址包含数组的大小.但是,双类型数组不会发生这种情况.
Output for int array : 1 1 1 1 1 5
Output for double array : 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.000000
Run Code Online (Sandbox Code Playgroud)
有人会解释输出吗?
谁能说出问题出在哪里?
someone@someone:~/Desktop$ cat morning.c
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
int main (int argc, char** argv)
{
printf ("Good Morning") ;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
someone@someone:~/Desktop/9raya$ ./morning.c
./morning.c: line 2: syntax error near unexpected token `('
./morning.c: line 2: `int main (int argc, char** argv)'
Run Code Online (Sandbox Code Playgroud)
我真的不知道问题出在哪里.
c ×6
c++ ×3
algorithm ×1
arrays ×1
emscripten ×1
garbage ×1
gnu ×1
http ×1
javascript ×1
linux ×1
malloc ×1
objective-c ×1
output ×1
pointers ×1
r ×1
struct ×1
syntax ×1
visual-c++ ×1