我想在我的makefile文件中写入简单的“帮助”选项,但是问题出在这里;
all:
echo "help options.."
Run Code Online (Sandbox Code Playgroud)
当我make在终端上打电话时,它打印:
echo "help options.."
help options..
Run Code Online (Sandbox Code Playgroud)
只能打印吗?:
help options..
Run Code Online (Sandbox Code Playgroud)
希望对您来说很清楚。
我正在动态计算数组的大小.就像是:
void foo(size_t limit)
{
char buffer[limit * 14 + 1];
}
Run Code Online (Sandbox Code Playgroud)
但只是GCC编译器说:
error: ISO C90 forbids variable length array ‘buffer’
Run Code Online (Sandbox Code Playgroud)
搜索SO我发现这个答案:
C99§6.7.5.2:
如果size是一个不是整数常量表达式的表达式......每次计算它时,它的值应大于零.
所以,我做了大小限制类型变量的重新声明:
void foo(const size_t limit)
Run Code Online (Sandbox Code Playgroud)
但它继续给我警告.这是GCC的错误吗?
我在我使用Visual Studio添加的资源[.resx文件]中有一些图像文件.但是,现在我需要以编程方式将图像添加到资源中.
我怎么这样?
我正在阅读一个UTF-8编码的文本文件.某些文件行包含重音符号.像这样:EdiçÃo.但是在Console和LINQPad输出Edi??o而不是.
这是我如何阅读文件:
File.ReadAllLines("foo.txt", Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
我CURRENT_DIR在我的程序中多次打电话(见下文).就像程序运行时不可更改的可执行路径一样,每次调用此函数时都无需再次定义它.
所以,我正在寻找一个解决方案,一旦这个值设置,它就不应该再次设置.
我当前的解决方案是:创建一个静态变量,将所有值设置为0,并在if语句测试中检查第一个字符是否为非null,如果为true,则设置它.但它看起来像一个不优雅的..也许有一个更好的解决方案..通过使用包括宏的一些模型,我不知道.
看代码:
#define CURRENT_DIR ({ \
static char buffer[MAX_PATH + 1] = { 0 }; \
if(buffer[0] != '\0') \
getcurrentdir(buffer, MAX_PATH); \
buffer; \
})
Run Code Online (Sandbox Code Playgroud) 我正在实现perror()相当于我正在使用的API.
perror()ISO C标准doc说:
perror()函数不得更改标准错误流的方向.
但以编程方式,它意味着什么?
我现在正在使用fprintf(stderr, .. ).用它是个错误吗?如果是真的,为什么?如果我的实施中有一些错误(见下文),请给我点.
根据我的解释查看我的C代码:
void
fooapi_perror(const char *s)
{
char *emsg;
if(s != NULL && *s != '\0')
fprintf(stderr, "%s: ", s);
emsg = fooapi_strerror(GetLastErrorCode());
fprintf(stderr, "%s\n", emsg);
free(emsg);
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么要使用strncpy而不是strcpy?
我正在读一本关于计算机/加密等的书.通常作者使用的东西,strncpy(dest, src, strlen(src));而不是strcpy(dest, src);它对我来说没什么意义..好吧,我是一个专业的程序员.
问题是:它真的有一个真正的区别吗?真正的应用使用这样的东西?
我把这个函数写成给定的文件名(一个jpeg文件)应该以像素为单位打印它的大小,w和h.根据我正在阅读的教程,
// 0xFFC0是"帧起始"标记,包含文件大小// 0xFFC0块的结构非常简单[0xFFC0] [ushort length] [uchar precision] [ushort x] [ushort y]
所以,我写了这个 struct
#pragma pack(1)
struct imagesize {
unsigned short len; /* 2-bytes */
unsigned char c; /* 1-byte */
unsigned short x; /* 2-bytes */
unsigned short y; /* 2-bytes */
}; //sizeof(struct imagesize) == 7
#pragma pack()
Run Code Online (Sandbox Code Playgroud)
然后:
#define SOF 0xC0 /* start of frame */
void jpeg_test(const char *filename)
{
FILE *fh;
unsigned char buf[4];
unsigned char b;
fh = fopen(filename, "rb");
if(fh == NULL)
fprintf(stderr, …Run Code Online (Sandbox Code Playgroud) 我希望在没有此警告的情况下在我的C++程序中使用匿名结构,但保留-pedantic标记,因为我想知道我是否正在使用来自Microsoft/GCC的任何其他编译器扩展.我知道, -Wno-gnu但它关闭的比我想要的更多,每个gcc的扩展都支持.可能吗?
我需要string在D忽略的情况下比较两个s(而不是仅ASCII).明显的解决方案是:
s1.toUpper() == s2.toUpper()
但是我想避免字符串重复或者自己写一个支持可能最快的原生代(如果有的话).