c语言条件编译出错怎么办
❶ C语言中的条件编译 #if define(宏名称)为什么错误了
预编译指令格式错误。
#if define (IBMPC)应改为#ifdef IBMPC
这种结构是为了防止头文件嵌套包含。一般的用法是
#ifndef _IBMPC_H
#define _IBMPC_H
#include"ibmpc.h"
....
#endif
❷ C语言的条件编译为什么不能正常运行之三
# include x 3
改为
#define x 3
即使做了上面的修改,程序仍然是错误的,
修改后的程序中,#ifndef x 为假,所以不执行int x=1,如此后面的x=2就是个非法表达式(此时x是个右值,而非左值,所以不能为其赋值)。
❸ C语言条件编译程序问题
一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”(conditional compile)。条件编译语句排版时,需考虑以下三种位置:
1)条件编译语句块与函数定义体之间不存在相互嵌套(主要在(.h)文件中);
2)条件编译语句块嵌套在函数体之外(主要在(.c)文件中);
3)条件编译语句嵌套在函数体内 (主要在(.c)文件中)。条件编译指令将决定哪些代码被编译,而哪些是不被编译的。可根据表达式的值或某个特定宏是否被定义来确定编译条件。
❹ C语言条件编译出错
查查你的编译器的条件编译语句定义中有没有#error语句
❺ C语言编译报错
#include <stdio.h>
#include <string.h>
int main()
{
int gg(int i);
int i;
while(1){
i=0;
printf(" 1.查看历史日程表\n");
printf(" 2.输入新的日程表\n");
printf(" 3.查看已完成的日程表\n");
printf(" 4.查看未完成的日程表\n");
printf(" 5.退出登录\n");
printf(" 请选择相应序号: ");
scanf("%d",&i);
if(i==5){
break;
}
gg(i);
printf("\n");
printf("\n");
printf("\n");
}
}
int gg(int i){
int aa();
int bb();
int cc();
int dd();
switch(i){
case 1:
aa();break;
case 2:
bb();break;
case 3:
cc();break;
case 4:
dd();break;
}
}
int aa(){
FILE*fp;
int length=1000;
char str[1001];
if((fp=fopen("11s.txt","r"))==NULL){
printf("无文件");
return 0;
}
while(fgets(str,length,fp)!=NULL){
printf("%s",str);}
return 1;
fclose(fp);
}
int bb(){
FILE*fp;
char str[400];
printf("内容如下:\n");
scanf("%s",str);
if((fp=fopen("11s.txt","a+"))==NULL){
printf("文件不存在");
return 0;
}
fputs("\n",fp);
fputs(str,fp);
printf("加入成功");
fclose(fp);
return 1;
}
int cc(){
FILE*fp;
int length=1000;
char str[1001];
printf("内容如下:\n");
if((fp=fopen("11s.txt","r"))==NULL){
printf("无文件");
return 0;
}
while(fgets(str,length,fp)!=NULL){
if(strstr(str,"已完成")!=NULL){
printf("%s",str);
}
}
fclose(fp);
return 1;
}
int dd(){
FILE*fp;
int lenght=1000;
char str[1001];
printf("内容如下:\n");
if((fp=fopen("11s.txt","r"))==NULL){
printf("无文件");
return 0;
}
while(fgets(str,lenght,fp)!=NULL){
if(strstr(str,"未完成")!=NULL){
printf("%s",str);
}
}
fclose(fp);
return 1;
}
❻ C语言编译报错大部分都是先前定义在此,要怎么修改
自己要学会换一个思路来解决问题,看一看“标准”的头文件是怎么写的,比如stdio.h:
#pragma once
#ifndef _INC_STDIO // include guard for 3rd party interop
#define _INC_STDIO
// ....
#endif // _INC_STDIO
这样写可以保证这个头文件只会被编译一次。除了声明、模板类,一般不在头文件.h里边写实现代码。另外还要学会使用extern这个关键字
❼ C语言 条件编译问题
#include <stdio.h>
#include <stdlib.h>
#define CHANGE 0 //1表示翻译,0表示不翻译
int main(void)
{
char a[100];
int i;
char c;
printf("Please input the string\n");
for (i = 0; i < 100; i++)
{
scanf("%c", &a[i]);
if (a[i]== '\n')
{
a[i] = '\0';
break;
}
}
for (i = 0; i < 100;a[i] = c,i++)
{
#ifdef CHANGE 1
{
if(a[i]!= '\0')
{
c = a[i];
if (c == 'z')
{
c = 'a';
continue;
}
c = c -32;
}
else break;//你要加上跳出语句
}
//#else{};
#endif
}
printf("\n");
for (i = 0; i < 100; i++)
{
if (a[i]== '\0')
break;
printf("%c", a[i]);
}
system("pause");
return 0;
}
你调试看一下,当a[i]=='\0'的时候它i仍然在自加,根本就没有跳出循环,所以后面出现的是乱码,所以你要加上个break跳出语句!还有你的那个小写转换为大写的时候不对,应该是减去32,大写转换为小写的时候是加上32,理解了的话,别忘了加分哦!祝你好运!
❽ C语言里的条件编译问题
你看看你的工程配置里面有没有预定义,一般像这种系统配置都是在创建工程的时候自动预定义了。如果没有,那就是真没有,说明这段代码在你选择的这款芯片上就是不需要。