事情是这样的。我有一个静态类,其中包含几个用于获取输入的静态函数。该类包含一个私有静态成员变量,用于指示用户是否输入了任何信息。每种输入法都会检查用户是否输入了任何信息,并相应地设置状态变量。我认为现在是使用三元运算符的好时机。不幸的是,我不能,因为编译器不喜欢这样。
我复制了这个问题,然后尽可能地简化我的代码,使其易于理解。这不是我的原始代码。
下面是我的头文件:
#include <iostream>
using namespace std;
class Test {
public:
void go ();
private:
static const int
我想知道下面的代码是否会在编译时抛出错误或警告,并启用任何类型的gcc/g++优化。
int a;
a = func();
if (a == 2) {
assert(false);
}
我认为下面的代码可以在发布配置中抛出一个警告"set但未使用的变量“。
int a;
a = func();
assert(a != 2);
但是上面的代码呢?(gcc 可以删除if语句本身,因为if语句或if块(在版本构建中)将不会执行任何操作,然后抛出一个警告“未使用但设置变量”)。
编辑:这绝对不是一个关于减少代码或执行文件大小的问题。我想知道在任何构建配置中成功的一段代码。
编辑:我们在
查看问题并尝试一些代码:
int x = 100;
while ( 0 <-------------------- x )
{
printf("%d ", x);
}
我尝试用gcc编译,得到以下错误:
file.c: In function 'main':
file:c:10:27: error: lvalue required as decrement operand
while ( 0 <-------------------- x )
但是使用g++进行编译是可行的。为什么这段代码在C++中有效,而在C中无效?
我得到了以下代码:
#include <stdio.h>
int main(int argc, char **argv) {
int i = 0;
(i+=10)+=10;
printf("i = %d\n", i);
return 0;
}
如果我尝试将其编译为一个C源代码,使用的是gcc,我得到一个错误:
error: lvalue required as left operand of assignment
但是,如果我使用g++将其编译为C++源代码,则在运行可执行文件时不会出现错误:
i = 20
为什么会有不同的行为?
当我运行以下代码时:
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
p = strcmp(NULL,"foo");
return 0;
}
我得到了分段错误。echo $?说是139。但是当我跑的时候
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
strcmp(NULL,"foo"); // Note removed ass
我正在我的机器上运行Solaris,我需要安装Date::Calc perl模块,这样我的一个脚本才能工作。
当我运行以下命令时:
sudo perl -MCPAN -e 'install Date::Calc'
我得到以下错误:
Tests succeeded but one dependency not OK (Bit::Vector)
STBEY/Date-Calc-6.3.tar.gz
[dependencies] -- NA
Running make install
make test had returned bad status, won't
我的代码使用三元运算符检查条件,然后返回指向c-string常量的指针或抛出异常。 奇怪的是,只有当我从三元运算符的一个路径执行throw时,编译才会失败。如果我在两边都放了一个字符串常量,所有东西都会编译。 // this line gives no compilation error
auto str = condition ? "foo" : "bar";
// this line gives "error: invalid use of non-lvalue array"
auto str = condition ? "foo
我正在编写一个程序,该程序使用malloc来创建全局数组。我尝试了一下(当然是在main()之外): int *arr=malloc(5*sizeof(int)); 在GCC编译器中,闪现了以下错误: main.c:4:10: error: initializer element is not constant
int *arr=(int *)malloc(5*sizeof(int));
^ 我在Dev-C++上尝试过,但没有这样的错误中断编译。这个错误是什么意思,为什么是针对GCC的?
我已经在我的苹果电脑上安装了使用的GCC 4.8。除了像scanf和printf这样的某些函数,程序编译得很好,没有任何错误/警告,即使我没有包括它们各自的库,比如cstdio,其他一切都很好。有什么办法可以让GCC (更具体地说是G++,因为我正在处理C++程序)在输入这样的代码时抛出一个错误?下面的代码在我的机器上编译得很好:
#include <iostream>
//Notice I did not include cstdio but my program uses printf later on
int main()
{
printf("Hello W
在大多数情况下,如果我想在C中创建一个可选特性,我只需创建两个函数,如下所示:
#ifdef OPTIONAL_SOMETHING
void do_something(int n, const char *s)
{
while (n--) {
printf("%s", s);
}
/* ...You might get the point, really do something... */
}
#else
void do_something(int n, const char *s)
{
/* Empty body */
}