LINUX.ORG.RU

Приходится каждый раз менять путь до каталога,если использовать другой ПК.

 , , ,


0

1

Добрый день! Есть проект на СИ,использую систему контроля версий. Столкнулся с проблемой: на одном пк у меня путь к каталогу:

#define pathToFolers "/home/user0/projects/name_prjct/"

а на другом пк:

#define pathToFolers "/home/user1/projects/name_prjct/"

Вопрос: возможно ли сделать так,чтобы не приходилось каждый раз менять имя пользователя в пути к каталогу в зависимости от того за каким пк я в данный момент работаю?

да, используй относительные пути

например

#define pathToFolers "name_prjct"

дальше, либо запускать программу из $HOME/projects, либо вычислять путь из пути к исполняемому файлу.

waker ★★★★★
()
#define pathToFolers "/home/$USER/projects/name_prjct/"
Dron ★★★★★
()
#ifndef APATH
#define APATH  /home/user1
#endif

#define pathToFolers  "APATH/projects/name_prjct/"

А Makefile пусть делает -DAPATH ~

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

#define pathToFolers «APATH/projects/name_prjct/»

#define pathToFolers APATH"/projects/name_prjct/"

mix_mix ★★★★★
()
Ответ на: комментарий от Deleted

~ разворачивается в путь шеллом

anonymous
()
Ответ на: Ура! от BladzheR

эх! я поздно увидел...

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
    char *home = getenv("HOME");
    char *path, *dir = "/projects/name_prjct/";

    path = (char *)malloc(strlen(home) + strlen(dir) + 1); 
    strcpy(path, home);
    strcpy(path + strlen(home), dir);

    printf("path = '%s'\n", path);
}

metawishmaster ★★★★★
()
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;

int main(){
  auto path=getenv("HOME")+"/projects/name_prjct/"s;
  cout<<path<<'\n';
  }
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.