當前位置:首頁 » 編程軟體 » c語言條件編譯出錯怎麼辦

c語言條件編譯出錯怎麼辦

發布時間: 2022-09-23 03:28:04

❶ 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語言里的條件編譯問題

你看看你的工程配置裡面有沒有預定義,一般像這種系統配置都是在創建工程的時候自動預定義了。如果沒有,那就是真沒有,說明這段代碼在你選擇的這款晶元上就是不需要。

熱點內容
安卓app應用程序擴展名是什麼 發布:2024-04-19 20:08:29 瀏覽:558
sqlserver2005圖標 發布:2024-04-19 19:37:26 瀏覽:946
動畫與編程 發布:2024-04-19 18:53:10 瀏覽:315
把自己家的wifi加密 發布:2024-04-19 18:47:23 瀏覽:574
顯卡資料庫 發布:2024-04-19 18:47:22 瀏覽:553
iosapp清除緩存 發布:2024-04-19 18:47:18 瀏覽:270
sql應用領域 發布:2024-04-19 18:42:56 瀏覽:37
訪問外網伺服器加速軟體 發布:2024-04-19 17:48:45 瀏覽:696
加密軟體對比 發布:2024-04-19 17:27:05 瀏覽:367
保密管理系統怎麼連接伺服器 發布:2024-04-19 17:26:59 瀏覽:18