Заменить все символы // для комментариев в C ++ на символы комментариев c / * * / [duplicate]

Через пару недель я наконец нашел правильный решение! Я понял, что проблема была в групповой синхронизации, поэтому правильный конфиг для групповой синхронизации должен выглядеть следующим образом для вашей конфигурации FreeIPA:

ldap.group.baseDn=cn=groups,cn=compat,dc=company,dc=com
ldap.group.request=(&(objectClass=posixGroup)(memberUid={uid}))
ldap.group.idAttribute=cn

Разница в cn=groups,cn=compat,dc=company,dc =ком. Вы не можете использовать фильтр memberUidс cn=accounts, на самом деле вы можете, но он не найдет uidsпользователей.

1
08.10.2018, 17:48
2 ответа
sed 's|//\(.*\)|/*\1 */|'

Но имейте в виду, что есть ряд случаев, когда это не сработало бы правильно, как в:

char *url = "http://host/";
/*
   comment with // nested C++-syle comment
 */
// comment \
continued on the next line

Чтобы учесть эти и другие случаи, вы можете адаптировать код в других вопросах и ответах как:

perl -0777 -pe '
  BEGIN{
    $bs=qr{(?:\\|\?\?/)};
    $lc=qr{(?:$bs\n|$bs\r\n?)}
  }
  s{
    /$lc*\*.*?\*$lc*/
    | /$lc*/((?:$lc|[^\r\n])*)
    | "(?:$bs$lc*.|.)*?"
    | '\''$lc*(?:$bs$lc*(?:\?\?.|.))?(?:\?\?.|.)*?'\''
    | \?\?'\''
    |.[^'\''"/?]*
  }{defined($1)?"/*$1 */":$&}exsg'

Что на приведенном выше образце дает:

char *url = "http://host/";
/*
   comment with // nested C++-syle comment
 */
/* comment \
continued on the next line */
4
27.01.2020, 23:15

Вам нужно только это:

 's+//+/*+g' file | sed 's+\/\*.*+& */+'


/*this is a thest of how this works */
#include <stdio.h>

int main()
{
/* declare some variables here */
int num1 = 4;
float num2 = 3.5;

/* print the result  */
printf("The result is %f\n", num1 * num2); /* this does it */

/* does it work? */ */
return 0;
}
1
27.01.2020, 23:15

Теги

Похожие вопросы