頁:
[1]
詢問要如何修改.h檔中定義好的exter的值
我想想詢問要如何修改.h檔中定義好的exter的值a.h
extern a=10//等待被修改的值
a.c
#include <stdio.h>
#include "a.h"
int main(){
int value,i;
print("max=%d\n",a);
scanf("%d",&value);
if(value>a){
print("you key in %d >%d\n",value,a);
a=value;//如果這次輸入20,那我希望可以取代掉原先定義在a.h中的a值,在下次執行的時候可以讓a=20
}
}
相詢問該怎麼寫
感謝你們
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> extern 的作用是宣告
告訴 C compiler 說我有這個變數, 等會再補上定義
一般用法是例如 extern int a; 就好
初始值是定義的時候設定的
例如你有一個 global.c 裡面寫
int a = 10;
程式每次執行之間本身沒有任何關聯
如果你想保留某個數值或資料
最簡單的作法是結束前寫入檔案, 剛開始時讀檔案 應該這樣說
我現在遇到的問題是
第一隻程式是一直執行的一支主程式
內容簡化後如下
#define CYCLE_TIME=125
int cycle_start=0;
while(1){
cycle_start += CYCLE_TIME;
...還有一些中斷程式
}
第二隻程式是當有遇到某些情況
想要修改CYCLE_TIME來因應情況
兩隻程式是一直在執行的
程式簡化如下
if(a>10)CYCLE_TIME=100
else if(a>20)CYCLE_TIME=200
可是目前遇到的問題是
不知道要如何將這個修改後的CYCLE_TIME傳回原先的程式
希望可以幫忙解惑
感恩...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 本帖最後由 inunu 於 2016-8-23 04:47 AM 編輯
你現在的條件是兩個獨立的程序互相傳遞資料
這屬於作業系統的程序管理和通訊設計實作
例如 Linux 裡用 shared memory
透過 shmat() 獲得一個 pointer, 指到共用的記憶體空間
(一般各程序都是用自己獨立的空間, 不會互相干擾)
然後從共用空間來修改參數數值
你也可以用 named pipe, 檔案, 網路通訊等方式去做
底下例子不加參數執行會一直循迴等待
加數字參數執行則會改變等待的秒數
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int main(int argc, char *argv[])
{
int shmID;
char *shmData;
// Get shared memory
shmID = shmget(987654321, sizeof(char), 0644 | IPC_CREAT);
shmData = shmat(shmID, NULL, 0);
if (argc < 2)
{
// Initialize
*shmData = 2;
while (*shmData > 0)
{
print f("Sleep for %d seconds.\n", *shmData);
sleep(*shmData);
}
}
else
{
*shmData = (char)atoi(argv);
print f("Set sleep time to %d\n", *shmData);
}
return 0;
}
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁:
[1]